Grigorii Kirgizov
e55e67bc08
Modify EvaluationResult to also return the set of tags of all invalidated rules (MPSCR-32)
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
1334c7c7a1
Fix missed dependencies when computing rule's uniqueTag (from nodes in macro expand)
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
046f4969e1
Remove unnecessary calls to EvaluationResult.storeView() to save some time
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
79c31a44ba
Handle journal reset for occurrences: upd their status (eg !alive). Add test for one error caused by it.
...
Occurrences which weren't yet activated (according to current journal position) can't be reactivated.
Test program is an example of such case.
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
ba8d00c224
Handle incr exec of cases unhandled with introduced mem opt. Added test passes.
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
9aaf35561a
Mem opt: store RuleMatchers only for principal rules between sessions. Add a test for incr processing.
...
The number of preserved matchers is around 4-10 times less.
The added test is an example of programs handled incorrectly with this opt. Fails now.
2020-02-05 12:29:33 +03:00
Grigorii Kirgizov
54fc91a031
Fix and reenable 3 tests on incremental typechecking disabled in fa7532f3, enable few older tests for previously missing bl machinery
2020-02-05 12:29:33 +03:00
Fedor Isakov
b6e4e80010
Coderules/logic editor: support entering standalone item as logical clause, allow to type = and == naturally.
2020-02-04 17:34:38 +01:00
Fedor Isakov
9403087c11
Drop RepositoryProvider interface (unused).
2020-02-04 11:43:20 +01:00
Fedor Isakov
5a20630f3d
Suppress errors reported by constraints on ProjectExpression.
...
This enables check project to succeed without breaking the build.
2020-02-03 12:11:49 +01:00
Fedor Isakov
5b7bdc5838
Add error annotations on test data where errors are expected.
2020-02-03 12:00:44 +01:00
Fedor Isakov
e3580d489e
Update github status buttons.
2020-02-03 11:26:11 +01:00
Fedor Isakov
391c9053b5
Apply migrations after switch to MPS 193. Regenerate project.
2020-02-03 11:24:22 +01:00
Fedor Isakov
2345b8afa3
Switch to MPS 2019.3.1 release
2020-02-03 11:12:03 +01:00
Fedor Isakov
97353bfd89
Ensure collected report items are always forwarded from checkRecursively query.
2020-01-24 15:03:44 +01:00
Fedor Isakov
73f8179db7
Implement watching and incremental strategies in typechecking service.
...
Fix errors not always being reported to checkRecursively.
2020-01-24 15:02:34 +01:00
Fedor Isakov
a5171cbffd
Add an option to turn watch for model changes on/off.
2020-01-23 14:45:52 +01:00
Fedor Isakov
22c09152d5
Ensure TypesIndex keeps unique node report items.
2020-01-23 12:50:19 +01:00
Fedor Isakov
28355b99f4
Document/refactor/cleanup UpdatesRecorder for better code readability.
2020-01-22 18:00:57 +01:00
Fedor Isakov
612b1aa098
Make Factory instance in TypecheckingService volatile, fix MPSCR-26.
2020-01-21 17:50:06 +01:00
Fedor Isakov
fd300e3e07
Add null guard before invoking pattern match, avoid NPE.
2020-01-21 15:32:46 +01:00
Fedor Isakov
e763b0a3eb
Fix maven source plugin's version
2020-01-20 19:43:56 +01:00
Fedor Isakov
c384785b12
Apply automatic migration.
2020-01-20 16:54:38 +01:00
Fedor Isakov
e9e357ea12
Fix deprecated ivy pattern.
2020-01-20 16:51:08 +01:00
Fedor Isakov
04e54ccf0b
Upgrade to gradle 6.1
2020-01-20 16:51:03 +01:00
Fedor Isakov
4748387e54
Ensure node/node-ptr objects in activation trace are navigatable.
2020-01-20 10:52:40 +01:00
Fedor Isakov
5ebdea0714
Add necessary module dependency.
2020-01-20 10:52:40 +01:00
Fedor Isakov
85cf6888d5
Typechecking BL: introduce type term, reorganize terms to extend type, drop kind value from prim.
...
Temprorarily use classifier type String for internal string type.
Restore eq predicate in converts_ground_id body.
Remove origin{} block from var decl, doubtful idea.
2020-01-20 10:52:40 +01:00
Fedor Isakov
dfd8e97ce8
Ensure rule's unique tag is printed when debugging incremental launcher.
2020-01-20 10:52:40 +01:00
Fedor Isakov
c66e746e77
Introduce open terms, support ad-hoc polymorphism.
...
A term may indicate that it "extends" another open term.
An extended term has essentially the same form as the one
being extended, so that they can be unified.
2020-01-20 10:52:39 +01:00
Fedor Isakov
70969dfa5c
Implement coerce to type using pattern (ad-hoc for now).
2020-01-15 12:57:01 +01:00
Fedor Isakov
858d43831c
Optimize analysis of constraints when building program. Drop ConstraintRegistry.
2020-01-14 15:34:54 +01:00
Fedor Isakov
8af582f9b2
Refactoring: simplify contract b/w controller and logical state.
2020-01-14 15:34:54 +01:00
Fedor Isakov
0fbc7f6571
Ensure typechecking can't run two coderules sessions with same session data.
...
Avoid sharing mutable state b/w two invocations of typechecking
initiated from different threads (race condition).
2020-01-14 12:48:24 +01:00
Fedor Isakov
d208e802b9
Remove unnecessary feature: StateFrameStack is no longer used.
...
StateFrameStack adds no functionality but requires too much processing.
Rename StateFrameStack -> LogicalState.
Rename ProcessingStateImpl -> ConstraintsProcessing.
Simplify occurrence's logical observer.
Introduce transient dependency on controller to LogicalState.
Keep logical state as part of session token, avoid re-initializing
all logical observers.
Make replaying of match journal independent of controller.
2020-01-10 13:51:07 +01:00
Fedor Isakov
fa7532f34f
Include origin features's hash to requiredHash when building rules.
...
This enables to adequately reflect changes in the model when it is updated
by editor actions, such as "side transform".
Three tests was broken as the result of this fix and are disabled
http://127.0.0.1:63320/node?ref=r%3A8d22f6d9-72f0-49ec-92ee-027a87fbedd4%28jetbrains.mps.baseLanguageExt.test.incremental%40tests%29%2F3095008005741803340
2020-01-02 17:42:38 +01:00
Fedor Isakov
662d65bcbb
Ensure types index is only updated once per query execution.
2020-01-02 17:20:13 +01:00
Fedor Isakov
d50d3cf9f6
Fix incremental program update not triggered in some cases.
...
Track invalidated set of nodes and update program correspondingly.
Use node instances as keys instead of node pointers.
2020-01-02 17:20:13 +01:00
Fedor Isakov
52d05e4953
Ensure only really evaluated queries are logged.
2020-01-02 17:20:13 +01:00
Fedor Isakov
3068ee8efb
Rework support for cached types index. Cache also the reported issues.
...
TypecheckingQueries must track the types index used for reporting
the state of cache, since the index itself is built independently
of whether or not 'checkRecursively' is invoked.
2020-01-02 17:20:13 +01:00
Fedor Isakov
efd19aa45b
Implement incremental generation of coderules program.
...
Introduce SessionData, allow to keep arbitrary data with the session.
Extend RulesListTable with support for invalidation based on rule unique tags.
Introduce UpdatesRecorder to keep track of invalidated nodes.
Extend ApplyTemplatesStep with invalidate logic for typechecking.
Simplify design, drop unnecessary fields, minor refactorings.
2020-01-02 17:20:13 +01:00
Fedor Isakov
1e9e41601a
Add method to RuleEx that had been removed from the superclass.
2020-01-02 17:20:13 +01:00
Fedor Isakov
01195cb1ac
Drop unused methods from Rule interface. To be reinstated in RuleEx.
2020-01-02 17:20:13 +01:00
Grigorii Kirgizov
955c814c3c
Add test for now failing cases of nested generics (filed MPSCR-29)
2019-12-26 19:13:17 +03:00
Grigorii Kirgizov
6399859f8e
fix one incorrectly removed rulesList extends
2019-12-26 18:44:17 +03:00
Grigorii Kirgizov
846dbed182
Minor refactor: Split Conversion rulesList to general convertsTo rules and other conversions. Drop intro_hasBound
2019-12-26 18:32:00 +03:00
Grigorii Kirgizov
1b79c2b548
Check compatability for eq/neq operators, forbid null to prim conversion (MPSCR-3)
...
Introduced a variation of conversion relation with a bit stricter boxing, needed for eq/neq.
e.g. suppose { (Number n, float f) => n == f } here f shouldn't be boxed.
2019-12-26 17:57:59 +03:00
Grigorii Kirgizov
52af2d527a
Complete subtyping for array types (A[] <: Serializable, Cloneable; JLS 4.10.3) (MPSCR-3)
2019-12-25 14:11:01 +03:00
Grigorii Kirgizov
e4b927e6e6
stringType: make it a sub-dataform of classifierType, don't add new rules. Add tests for conversion to/from classifierType and binstr promote. (MPSCR-3)
...
Everywhere where we don't care whether it's <String> or <string> it will be handled just as String.
Where we need to discern between the cases (as in Recover), 'stringType()' dataform can be matched first.
2019-12-25 14:09:48 +03:00
Grigorii Kirgizov
171671161f
Remove unused promoteUnchecked rule, add "shortcut" promote_reflexive rule which avoids computing subtype paths
2019-12-24 19:57:46 +03:00