Commit Graph

371 Commits

Author SHA1 Message Date
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 4748387e54 Ensure node/node-ptr objects in activation trace are navigatable. 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 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 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
Grigorii Kirgizov b672778235 Fix build, add impl in plugin code of observers methods in Logical interface 2019-12-24 02:41:46 +03:00
Grigorii Kirgizov e8cb6f9ad2 Add rule for determining correct type to bind inference variable to. Fixes MPSCR-13.
The inferred type can be either capture or type variable.
This logic is covered by a new rule 'inferFromCapture'.
For examples see 'Bounds' test sample.

This inference is used in call arguments type inference.
It happens on cases when bounds arise from several places:
 (a) bounds for inference variables from type vars declared in method signature (hasBound constraint)
 (b) bounds of type vars used as arguments to call (typeVariableType term wiht bounds inside)
 (c) bounds from captures on type variables from case (b), which come in the form of 'captureOf' term
2019-12-18 21:47:07 +03:00
Grigorii Kirgizov 894c727e70 Fix minor bug concerned with CopyUtil
CopyUtil didn't correctly map logicals nested inside DataForms which are bound to Logicals.
That's because CopyUtil relies on DataForm:variablesCount() and
LogicalDataForm:variablesCount didn't consider the case when bound value is itself DataForm.
2019-12-18 21:47:06 +03:00
Fedor Isakov 603dab6797 Refactor RuleBuilder: extract RuleImpl as standalone class. 2019-12-11 11:42:31 +01:00
Fedor Isakov f83ac4b692 Clearer contract for building rule's uniqueTag. Drop ArgumentsCollector.
ArgumentsCollector used in tests only, move it there.
2019-12-10 17:21:33 +01:00
Fedor Isakov e926b86bcd Minor refactoring in program producing code.
Reorganize and cleanup code.
2019-12-10 11:58:26 +01:00
Fedor Isakov 0af0d0152d Ensure typechecking cache is cleared on closing session. Closes MPSCR-23 2019-12-09 14:15:16 +01:00
Fedor Isakov 1f621bfda8 Refactor query-running code in typechecking provider. Show time spent in query.
Only show messages for queries that took more than 10 ms. to complete.
2019-12-02 11:33:49 +01:00
Fedor Isakov 85674ef077 Add explicit "test" facets to test solutions. 2019-11-24 17:58:15 +01:00
Fedor Isakov bfbf4840fa Fix language imports. 2019-11-11 14:49:07 +01:00
Fedor Isakov 5bce04eb71 Fix language imports. 2019-11-11 14:49:01 +01:00
Fedor Isakov 69bc34e8f9 Drop language j.m.l.smodel.types containing SNodeTypeOp that is no longer used. 2019-11-11 14:37:41 +01:00
Fedor Isakov de84b88b2c Replace instances of SNodeTypeOp with regular method invocation. 2019-11-11 14:27:57 +01:00
Fedor Isakov ecd2594fed Drop deprecated Reporting interface and all its usages.
Remove runtime solution that contained only Reporting.
2019-11-11 13:53:41 +01:00
Fedor Isakov f92148094a Drop long deprecated concepts with zero instances. 2019-11-11 13:53:41 +01:00
Fedor Isakov fb8e995c88 Fix NPE in event processing, closes MPSCR-12. 2019-11-11 11:11:55 +01:00
Fedor Isakov 036f8393b5 Avoid null-ifying Config fields on dispose. Fix stupid bug in TypecheckingOptions. Fixes MPSCR-8. 2019-11-11 10:58:49 +01:00
Grigorii Kirgizov 53ddcb8492 Small cleanup of TraceTool for incremental processing 2019-11-07 17:15:56 +03:00
Grigorii Kirgizov ea309d05e7 MPSCR-14: Remove unnecessary & failing call to tracer.restored() for incrementally preserved occurrences 2019-11-07 15:43:02 +03:00
Grigorii Kirgizov 7b33e0e31f Minor cleanup: remove usages of DependentRulesSpec 2019-11-06 19:10:29 +03:00
Grigorii Kirgizov cd25087ef9 Rename 'handlers' in CodeRulesProgram to 'rulesLists' 2019-11-06 19:10:29 +03:00
Grigorii Kirgizov e4017b0b16 Preserve still valid Rules from previous incremental sessions with a help of RulesDiff 2019-11-06 19:10:29 +03:00
Grigorii Kirgizov f343ba0d3b Adjust to changes in SessionToken & RulesDiff interfaces 2019-11-06 19:10:29 +03:00
Grigorii Kirgizov 9b61c6a2d3 Move RulesListIImpl out of RulesListBuilder
For later Program modification by RulesDiff and preserved rules from prev Program
2019-11-06 19:10:29 +03:00
Fedor Isakov 3f1b65ada2 Fix the structural errors introduced by a badly run migration. 2019-11-06 12:05:18 +01:00
Fedor Isakov ad90a4cb77 Apply migration that replaces all instances of NodeAnchor with .pointer op. 2019-11-06 11:21:57 +01:00
Fedor Isakov daa1bdceb6 Update default jvm options for running tests to "-Xmx2048m". 2019-11-05 20:53:01 +01:00
Fedor Isakov bb8fffc7ea Enable to use origin{} block to specify no origin.
Rules that are used only as auxiliary resolvers don't have an associated
origin node, even though they are produced from a specific location.
To enable tracking of correct origin to report errors to one can use
origin(no origin){} to override the default behaviour.
2019-11-05 18:46:02 +01:00
Fedor Isakov 76739d20d9 Minor refactoring and renaming in coderules runtime. Documentation.
Rename classes and methods to better reflect the intent.
Move test-related stuff to test util model.
2019-11-05 18:46:02 +01:00
Fedor Isakov e32ff36d1b Allow node-ptr<> to be specified in require statement. 2019-11-04 17:10:34 +01:00