Commit Graph

798 Commits

Author SHA1 Message Date
Fedor Isakov 19eca73737 Bump up version and compatibility with MPS 232 2023-09-21 14:27:53 +02:00
Fedor Isakov 2fdae19190 Drop old hack
Coderules are enabled on the app level, so no need to pass the repo.
2023-09-21 14:27:53 +02:00
Fedor Isakov e3c6c304fe Optimizing AspectClique discovery; clean up the code 2023-09-21 14:27:53 +02:00
Fedor Isakov 3cf666e633 Apply migrations and make project 2023-07-31 12:57:24 +02:00
Fedor Isakov 161ba961b1 Add an option to filter empty template nodes in trace view 2023-06-21 15:21:28 +02:00
Fedor Isakov 91964a4f53 Fix icons in trace view of Coderules tool
Used to refer to obsolete icons from legacy aspect.
2023-06-19 16:24:46 +02:00
Fedor Isakov 0e2c64e587 Fix resolve info 2023-06-12 12:20:35 +02:00
Fedor Isakov 6a849f82f2 Apply migrations and rebuild project 2023-06-12 12:01:02 +02:00
Fedor Isakov 682967c54c Fix code to make compatible with latest 23.1 EAP 2023-06-12 12:01:02 +02:00
Fedor Isakov bd7f76a020 Optimize shared typechecking state usage 2023-06-12 12:01:02 +02:00
Fedor Isakov 90d9644057 Respect isStrong query property when caching results 2023-05-03 10:31:55 +02:00
Fedor Isakov d262277d59 Update build script 2023-05-03 10:31:55 +02:00
Fedor Isakov 1c307e42c5 Fix UI action broken after options redesign 2023-05-03 10:31:55 +02:00
Fedor Isakov 985f6af842 Drop watching flag: always run typechecking in incremental mode 2023-05-03 10:31:55 +02:00
Fedor Isakov 4900f13609 Fix weird type hidden under SCPD 2023-05-03 10:31:55 +02:00
Fedor Isakov 8cb0ddc049 Simplifying TypecheckingOptions API
Enable using CR in bootstrap mode via Registry.
Drop unused code.
2023-05-03 10:31:55 +02:00
Fedor Isakov b074647d12 Fix unresolved reference 2023-04-10 16:43:04 +02:00
Fedor Isakov 24944eef5a Fix issues with ideaplugin module in source project 2023-03-29 13:00:09 +02:00
Fedor Isakov 425e125ba8 Migrate to JUnit5 and temporarily disable "check project modules" test 2023-03-03 17:10:05 +01:00
Fedor Isakov 6d267a33af Fix an error in log 2023-03-03 17:07:05 +01:00
Fedor Isakov ae586b665e Use 'Messages' as tool window ID for baloon. MPSCR-127 2023-02-23 17:09:41 +01:00
Fedor Isakov 94ceb7614f Fix config option provider 2023-02-23 16:43:50 +01:00
Fedor Isakov 5fbcb991f0 Fix trove library jar location in plugin 2023-02-23 16:28:05 +01:00
Fedor Isakov 6ebc8782b9 Avoid issues when opening root project
Only UI-specific code related to settings left in "idea" project solution,
everything else moved to MPS-managed plugins.
2023-02-23 11:48:19 +01:00
Fedor Isakov d531c6a5ad Run Migration Assistant 2023-02-22 13:52:02 +01:00
Fedor Isakov 430466c1c9 Fix code incompatible with latest platform 2023-02-17 11:41:32 +01:00
Fedor Isakov ad3ea9d63d Apply all migrations from 2022.2 2022-11-21 11:25:13 +01:00
Fedor Isakov d9cda646de Bump up plugin versions 2022-11-21 11:25:03 +01:00
Fedor Isakov 4086236afe Introduce recursion guard for typechecking provider 2022-11-21 10:50:00 +01:00
Fedor Isakov 14f4561b29 Ensure AspectClique contains all necessary languages 2022-09-08 14:07:06 +02:00
Fedor Isakov 0ae9743026 Fix tests 2022-09-02 18:01:46 +02:00
Fedor Isakov f8b17e4de7 Fix compilation 2022-09-02 16:28:31 +02:00
Fedor Isakov 4070194d01 Bump up plugin versions 2022-09-02 16:11:00 +02:00
Fedor Isakov 6030332107 Introduce profiling into program produce/evaluation steps 2022-09-02 15:49:30 +02:00
Fedor Isakov 34bb26f0fc Redesign coderules trace view to display profiling data
Coderuels trace now has three tabs that contain:
 - activation trace
 - template application trace
 - profiling data
2022-09-02 15:49:30 +02:00
Fedor Isakov 04cfbe0c30 Add an option to enable/disable profiling 2022-09-02 15:49:30 +02:00
Fedor Isakov 83e273da73 Fix tests by caching Config instance
Tests are launched within a context that is unable
to perform normal MPS classloading, so we resort to
caching the (singleton) instance of Config coming from
an (IDEA) plugin to use it later.
2022-08-27 19:39:14 +02:00
Fedor Isakov 5affa9af14 Ensure directory is created before build process 2022-08-26 16:15:35 +02:00
Fedor Isakov ec8ab9eb14 Fix generating with build script 2022-08-26 15:51:05 +02:00
Fedor Isakov de5fa8e543 Fix server build by turning compilation in MPS off
This commit breaks the project but allows to build
and test on the server. Locally the module
j.m.c.ideaplugin can be marked as "compile in MPS",
which effectively allows classes to be loaded.
2022-08-26 15:29:18 +02:00
Fedor Isakov 78f847747b Drop unstable hacks, simplify code 2022-08-26 13:58:22 +02:00
Fedor Isakov 0a9f4445d3 Drop obsolete artefact 2022-08-26 13:58:22 +02:00
Fedor Isakov a40d74c600 Fix project build and loading scheme
Source files for ideaplugin are now compiled externally.
2022-08-26 10:39:20 +02:00
Fedor Isakov 299d9a4fd8 Update build scripts to fix tests launching 2022-08-25 12:59:36 +02:00
Fedor Isakov d2ca45aa02 Extract bootstrap code to idea plugin; CR options to become app-level
CR typechecking options are now application-level.

The solution j.m.c.ideaplugin contains the code responsible
for accessing and setting the options. This solution is loaded
as IDEA plugin on deploy and as regular module in source project.

Also merge code from two modules into j.m.c.typechecking.
2022-08-25 12:59:36 +02:00
Fedor Isakov c4a157bf4d Bump up plugin versions 2022-08-16 18:11:49 +02:00
Fedor Isakov 29a7479bce Mark public methods of TC queries as synchronized 2022-08-16 18:11:49 +02:00
Fedor Isakov e3870d1397 Switch to using built-in messages view for Coderules messages 2022-08-01 14:11:38 +02:00
Fedor Isakov 874cc5d135 Paranoid NPE checks, MPSCR-113 2022-08-01 14:11:36 +02:00
Fedor Isakov ba7411abfa Bump up plugin version and rebuild build scripts 2022-07-28 10:37:36 +02:00
Fedor Isakov f985db8206 Update and rebuild build scripts 2022-07-28 10:30:38 +02:00
Fedor Isakov f9eb52a60f Introduce checkpoint for typechecking "strut" templates
The templates that typechecking relies upon are generated
into the user model as synthetic constructs. These later
need to be discovered by the generator to establish
correct references.
2022-07-28 10:30:38 +02:00
Fedor Isakov 33b472f560 Switch to using plain FQN strings to identify templates
SNodeReference are too unreliable to be used.
2022-07-28 10:30:38 +02:00
Fedor Isakov 468cee3b54 Avoid NPE when displaying baloon 2022-07-28 10:30:38 +02:00
Fedor Isakov 0663921ecd Refactoring in TypecheckingService; simplifying code
Request is no longer dependent on `TypecheckingService`.
Only single request can be processed at a time, which helps
prevent recursion.
All facade method in `TypecheckingService` now return instance
of `Response` instead.
2022-07-15 19:46:33 +02:00
Fedor Isakov 0422a4cbd4 Fix exception initialization 2022-07-15 19:46:32 +02:00
Fedor Isakov 115135bbb5 Update plugin versions and manifests 2022-07-13 12:27:14 +02:00
Fedor Isakov 71d2014ef1 Update and rebuild build scripts 2022-07-07 12:56:30 +02:00
Fedor Isakov f24169ba26 Refactor Config to be immutable; allow multi-project MPSCR-105
Drop hacks that try to figure out the active project.
Instead introduce new ones that cache the instance of `ProjectRepository`
(unfortunately, there is no way around that now).
Stop accessing and modifying the singleton `Config` instance,
instead make an instance of `Config` a parameter to `TypecheckingService`.
2022-07-07 12:56:30 +02:00
Fedor Isakov e4d7a9ff9e Notify UISettings after changing preferences, listen to UISettings 2022-07-07 12:56:29 +02:00
Fedor Isakov 99907ec111 Fix how CR widget looks (more professional look) 2022-07-07 12:56:28 +02:00
Fedor Isakov a84675c0f2 Cache statusbar in intialization code to avoid NPE 2022-07-04 13:42:39 +02:00
Fedor Isakov ff1ceb7dda Update build script 2022-06-18 14:53:09 +02:00
Fedor Isakov f6e75628c8 Rebuild build script 2022-06-13 11:20:31 +02:00
Fedor Isakov 7593fc7b14 Avoid NPE if preferences are not available 2022-06-13 11:20:31 +02:00
Fedor Isakov 8a46abcfb3 StatusBar widget to control Coderules ON/OFF 2022-06-13 11:11:57 +02:00
Fedor Isakov d1f3066af2 Drop all caches from AspectLookup
Caches cause subtle errors and their utility is questionable.
2022-06-08 10:23:43 +02:00
Fedor Isakov e1bab4a1c7 Respect LateExpression arg when building unique_tag, MPSCR-107
Rule's unique_tag is important for update procedure
implemented by RulesPlanHandler. Only when we can guarantee
that an argument to constraint/predicate has not changed
we can save on re-building a rule from template.
Ignoring LateExpression was a mistake.
2022-06-07 15:22:39 +02:00
Fedor Isakov 88aaf7898c Ensure only relevant aspects selected for certain queries
While check/checkTypeOf queries are required to
process a whole root, other types of queries
can be sensitive to what aspects to include in
the processing.

Aspects are sorted in strongly-connected components,
among which the relevant one is selected.
2022-06-06 13:00:52 +02:00
Fedor Isakov 56c7bdad7f Make FQ symbol names displayed as short names in trace view 2022-05-26 12:52:25 +02:00
Fedor Isakov f862406ca6 Switch to using single AspectClique 2022-05-26 12:52:25 +02:00
Fedor Isakov c112a59116 Switch to collection of QueryTemplate instead of single instance
The deisgn decision to have only one instance of QueryTemplate
leads to the necessity to keep AspectClique separated for
every "typesystem". Whereas QueryTemplate are really perfectly
composable, and thus only one AspectClique is neeeded.

Also drop a rudimentary unused feature.
2022-05-26 09:58:31 +02:00
Fedor Isakov 710c5ddc9b Ensure failure during trace view update is gracefully handled 2022-05-25 13:37:55 +02:00
Fedor Isakov b6c190c35c Introduce ruleInput parameter to call macro
Accessing the rule input allows to track dependencies
necessary for correctly updating the feedback.
2022-05-09 17:02:12 +02:00
Fedor Isakov e7054ed124 Drop usages of invalidatedFeedbackKeys, minor fixes 2022-05-09 13:32:14 +02:00
Fedor Isakov e2521c3478 Bump up version of coderules plugin 2022-05-03 10:26:43 +02:00
Fedor Isakov 702098d091 Cleanup and simplify typechecking strategy 2022-05-03 10:26:43 +02:00
Fedor Isakov 7f34ea78f6 Drop incrementality-related options and UI elements 2022-05-03 10:26:43 +02:00
Fedor Isakov 050c47c2eb Update conreactor version to 0.9.16 2022-04-25 12:47:43 +02:00
Fedor Isakov bd249c5d0c Drop obsolete feature: incremental specification 2022-04-21 16:05:31 +02:00
Fedor Isakov c192a529a6 Display undo activate/discard events in trace view. MPSCR-102 2022-03-15 15:48:56 +01:00
Fedor Isakov 51a4949cbd Update reactor version 2022-03-15 14:27:43 +01:00
Fedor Isakov c7c55605f5 Add dependency to c.i.modules.platform to pluigns 2022-02-23 13:09:34 +01:00
Fedor Isakov b500bf5f8f Fix broken plugin descriptor 2022-02-17 17:50:27 +01:00
Fedor Isakov 73f86ba626 Disable obsolete warning 2022-02-17 17:08:31 +01:00
Fedor Isakov 9cb04439eb Fix packaging of coderules and mpscore plugins
Fix the path mapping of lib files.
2022-02-17 16:44:14 +01:00
Fedor Isakov c44e4b2080 Update coderules plugin desc, fix release number 2022-02-16 12:23:38 +01:00
Clement de La Bourdonnaye 2b23c56283 Added coderules modules in plugin content 2022-02-08 12:21:28 +01:00
Fedor Isakov d7ffb963f7 Fix and rebuild build scripts 2022-02-08 10:44:48 +01:00
Fedor Isakov 2e5d73b31e Add icons for typechecking roots and the aspect 2021-11-25 18:09:22 +01:00
Fedor Isakov 4e70300ea7 Update language imports 2021-11-24 16:22:17 +01:00
Fedor Isakov 3774759270 Drop references to removed Activation Trace 2021-11-24 16:22:17 +01:00
Fedor Isakov 3af6cf93b0 Fix missing effect 2021-11-18 12:29:33 +01:00
Fedor Isakov e95526ef33 Update build script 2021-11-18 10:59:58 +01:00
Fedor Isakov 4ccbff779f Refactoring in the UI: merging tool windows into one 2021-11-18 10:59:58 +01:00
Fedor Isakov e64f01a059 Move typechecking actions to debug menu, drop errors highlighting 2021-11-15 17:08:28 +01:00
Fedor Isakov b892bc3aa5 Avoid failing on empty handlers list, MPSCR-97 2021-11-15 13:00:03 +01:00
Fedor Isakov 5a6beac54e Avoid failing with a stacktrace on empty aspect clique 2021-11-15 13:00:03 +01:00
Fedor Isakov 6a120fb9d6 Change "show type balloon" shortcut to not conflict with Show Type dialog 2021-11-11 14:38:07 +01:00
Fedor Isakov 2c8781cc9b Provisional support for custom queries 2021-11-08 13:21:09 +01:00
Fedor Isakov ea47468c3d Cleanup the code, better separation of concerns 2021-11-08 13:21:09 +01:00
Fedor Isakov d09348512d Refactoring: extract Request hierarchy out of TypecheckingService 2021-11-04 12:48:11 +01:00
Fedor Isakov c9a830d730 Cleanup code, rely on Query for presentation 2021-11-04 12:48:11 +01:00
Fedor Isakov af8c50f3e5 Refactor TypecheckingService: parameterize Request with Query 2021-11-04 12:48:11 +01:00
Fedor Isakov 7cc8be7296 Refactor TypecheckingService: move logic to Request, simplify code 2021-11-04 12:48:11 +01:00
Fedor Isakov 96ede52bcc Cleanup typechecking settings page 2021-10-27 16:21:08 +02:00
Fedor Isakov cf04a60cc9 Minor improvements in displaying terms and activation trace 2021-10-26 17:46:41 +02:00
Fedor Isakov ebe463ece5 Fix dangling dependency 2021-10-26 17:46:40 +02:00
Fedor Isakov 257bc196c3 Re-save all models 2021-10-26 17:46:40 +02:00
Fedor Isakov dd4eece1df Refresh build project 2021-09-23 15:20:23 +02:00
Fedor Isakov f3c12ec4af Fix missing dependency 2021-09-23 15:16:17 +02:00
Fedor Isakov 1ed5fa4e4b Update build project 2021-09-22 17:08:25 +02:00
Fedor Isakov 2d52921561 Fix and optimize dependencies 2021-09-22 17:08:25 +02:00
Fedor Isakov 2420685b19 Disable an obsolete test 2021-09-22 17:08:25 +02:00
Fedor Isakov 82b04c23ae Introduce TYPE_COLLECTOR parameter to pass to template application session
The older technique that passed "typeCollector" to query is replaced
with passing this object as a session parameter.
Can be accessed with "CustomSessionParameter".
2021-09-21 17:54:51 +02:00
Fedor Isakov b122872890 Refactor Result to be able to clear the cause 2021-09-21 17:54:51 +02:00
Fedor Isakov 3f606ba63c Refactor the way parameters are passed to expand macro
Instead of the hack that that uses session parameters to pass
parameters to expandMacro, use directly `withParams` method
on macro token. All parameters are mapped to corresponding fields.

Introduce CustomSessionParameter to access parameters in
TemplateApplicationSession.
2021-09-21 17:54:51 +02:00
Fedor Isakov a5105e666a Update build scripts 2021-09-21 17:54:50 +02:00
Fedor Isakov a22d360c13 Add reexport on coderules.runtime in controlflow sample, fix build 2021-08-17 09:30:49 +02:00
Fedor Isakov f96211273c Drop hack for finding refs in LateParameter, switch to internal var ref 2021-08-17 09:30:49 +02:00
Fedor Isakov 6b0526ba31 Introduce language j.m.l.types to contain aspect-related generator mappings 2021-08-17 09:29:21 +02:00
Fedor Isakov b1fbf7265e Update plugin version and platform compatibility 2021-07-29 15:17:18 +02:00
Fedor Isakov c4db4fcafe Set generator options: strict=false in build scripts 2021-07-29 14:18:29 +02:00
Fedor Isakov 617a7d77a5 Fix build script 2021-07-29 12:46:57 +02:00
Fedor Isakov 4ea1d0cadd Feature: isGround and isNonground predicates, MPSCR-94 2021-07-22 13:59:19 +02:00
Fedor Isakov 2425fe933a Ensure dependency is tracked for nested expand macro applications
Expand macro passes the rule's input to nested macro calls.
This adds the macro input as the dependency of the rule's input.
As a result, incremental processing starts working in some cases.
2021-06-30 18:25:46 +02:00
Fedor Isakov c4811d7d74 Migration of types aspect
Add types aspect devkit, remove engaged in generation.
2021-06-29 14:51:10 +02:00
Fedor Isakov dd8c5ffb07 Introduce types aspect devkit and genplan 2021-06-29 14:51:10 +02:00
Fedor Isakov 9ea7ae2067 Better naming scheme for downloadable artefacts 2021-06-21 18:35:48 +02:00
Fedor Isakov 9826290f78 Fix building and packaging the plugins 2021-06-21 17:50:00 +02:00
Fedor Isakov a8b0b13513 Include build solution into coderules plugin; fix file name 2021-06-18 18:41:01 +02:00
Fedor Isakov 9527a097b8 Migrate to the latest MPS release, apply migrations 2021-06-18 18:41:01 +02:00
Fedor Isakov 02baab4100 Optimize AspectLookup: avoid traversing descendants of input 2021-05-18 12:32:03 +02:00
Fedor Isakov 1d620cdd63 Drop obsolete unused features, cleanup the code 2021-05-18 12:32:03 +02:00
Fedor Isakov 24ce9167bf Drop second implementation of aspect lookup, unify usages of AspectLookup 2021-05-18 12:32:03 +02:00
Fedor Isakov 1bb8763816 Refactor AspectLookup to depend on repository, cache results 2021-05-18 12:32:03 +02:00
Fedor Isakov 4ee3869b45 Introduce a means to use direct reference to INamedConcept in rules 2021-05-13 15:54:42 +02:00
Fedor Isakov 637da7d966 Apply migration and rebuild project 2021-05-04 18:24:30 +02:00
Fedor Isakov ea6e930954 Apply migration and rebuild project 2021-05-04 18:24:29 +02:00
Fedor Isakov 287c31c9f7 Process only pattern's top-level node when coercing
Ignore all contents of a pattern but the top level.
This covers most situations.
The pattern ought to provide information as to which
nodes are capturing variables.
2021-04-29 14:53:19 +02:00
Fedor Isakov ab87c8a129 Support strong convert/coerce queries 2021-04-28 08:54:25 +02:00
Fedor Isakov cce261ec8c Fix cleaning up the caches on modules reload 2021-04-28 08:54:25 +02:00
Fedor Isakov 450f2e5989 Fix coerce to pattern with antiquotations.
A node from a pattern with antiquotations is treated as a "hollow"
type with only the form defined, and all parameters being capturing
variables.
This is a workaround for certain kinds of coerce queries that define
unsound pattern nodes.
2021-04-28 08:54:25 +02:00
Fedor Isakov cff18e7ca5 Optimize RulePlanHandler
Avoid iterating over LinkedHashMap (ineffective).
Do topo-sort only once on creating the object.
2021-04-21 10:40:51 +02:00
Fedor Isakov 394cb720c1 Optimize program producing: drop checking of constraints
Constraints arity is no longer checked.
Checking for null arguments to constraints is done
in AbstractConstraint's constructor.
2021-04-19 22:55:09 +02:00
Fedor Isakov ff6b5ec6ae Apply migrations and rebuild project 2021-04-14 13:19:50 +02:00
Fedor Isakov 49357ab87a Drop all usages of "principal store" and "preamble" feature 2021-04-13 22:57:06 +02:00
Fedor Isakov 008887944d Refactor "incremental" tests launcher to not rely on incrementality
The incremental algorithm using history and replay/revalidate of
matches is deprecated and will be removed soon. The incremental tests
are now relying on the UpdataRecorder and RulePlanHandler to
implement incrementality.
2021-04-12 12:47:44 +02:00
Fedor Isakov 1769998f7f Implement Rule.isBasis contract, fix feedback basis processing
Invalidated rules set invalidates feedback that has any of them it in its basis.
Validated rules invalidates feedback that has all of validated
rules in its basis set.
2021-04-12 12:47:44 +02:00
Fedor Isakov 87a843088c Cosmetics: report ERR on a query finished with !success status 2021-04-12 12:47:44 +02:00