Grigorii Kirgizov
1c9060b769
Add simpler analysis to answer a question "Is incrementality allowed for this Coderules aspect?". Add initial tests for it.
...
It is a rule-local, non-interprocedural analysis and it also uses VarAnalysisUtil.
New analysis checks whether free variables can "escape" principal constraint rules inside principal constraints.
If there is such escaped variable, then it is a signal that this type system is designed with non-local type inference in mind.
Otherwise there's no need to produce principal constraints with free logicals as arguments.
So, no principal constraints with free vars -- no type inference is possible.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
ae993f6868
Separate VarAnalysisUtil into base and impl part that handles impl of involved relations ("isAffected").
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
87fb26b95b
Fix NPE in access to hashmap in VarModificationAnalysis
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
e41589cd4a
Fix few places in VarModificationAnalysis. Add tests for it (found some problems).
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
f1aa5cb923
Finish interprocedural part of VarModificationAnalysis. Add one more test for Var..Util.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
4ab877e822
Refine isAffected relation in VarAnalysisUtil: handle dep-s through composite logicals
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
62b08720cd
Fix finding isAffected relation in var2notvar case by more carefully handling aliasing with "non-local" vars. Few more tests.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
f7040b1d8d
Add metalogical aliasing in VarAnalysisUtil. Rewrite older analyses fully in BL and not template macros.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
8a2942c42b
Move VarModificationAnalysisUtil to new model for analysis-related code
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
64230b0412
Add tests for VarAnalysisUtil. Update its semantics.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
5f2b010e5b
Add checking analysis for non-trivial var modification (e.g. unification)
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
5ba57b0b61
Refine notion of principal rule: discern between different kinds of rules from queries. Resolves slowdown.
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
98356f25cc
rebase on master. remove extra deps in coderules generator
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
475ed7d023
Adjust border between abstract analyses classes and their generation-time impls
2019-08-22 15:16:17 +02:00
Grigorii Kirgizov
906f919e16
Run coderules program analyses at generation stage. Extend Rule with basetag(). Adjust how rule_tag is generated for reuse in generator.
...
basetag() returns name of ConstraintRule without node id.
Check on whether Rule is principal are now done through basetag(), it's sufficient.
Add part of future analysis: CallerTableBuilder.
2019-08-22 15:16:17 +02:00
Fedor Isakov
1b1de4af47
Introduce options to coderules helper. Only turn on typechecking trace in UI.
2019-08-22 13:47:51 +02:00
Fedor Isakov
6290cbe152
Enable to open typechecking trace from message view; other changes.
...
Collect trace on every invocation of typechecking.
Drop usages of editor component from trace view.
2019-08-22 11:39:07 +02:00
Fedor Isakov
028683f394
Introduce combinable effects, refactor Step hierarchy to produce effects.
...
Step subclasses are meant to be immutable and stateless.
The state is now encapsulated in Effect subclasses, which can be combined.
Correspondingly, schedule now produces streams of effects.
2019-08-21 11:44:26 +02:00
Fedor Isakov
aef7e4c2ee
Extract the non-UI part of trace view to j.m.coderules solution.
2019-08-20 23:11:19 +02:00
Fedor Isakov
d786ff43b9
Re-save all models, language name updated in .mpl files.
2019-08-20 23:11:19 +02:00
Fedor Isakov
c3d20db0e3
Refactor away messages and trace collection from trace view component.
...
The UI component TraceComponent serves as a visualization tool for a trace collected independently.
Messages are likewise collected elsewhere and shown via message log.
2019-08-20 23:11:19 +02:00
Fedor Isakov
901bf5ad20
Fix type index cache: impossible to attach back an unattached model.
...
Index must never be updated once registered (published) with a repo.
A new index is always created and all contents is copied from the old one.
2019-08-20 23:11:19 +02:00
Fedor Isakov
59bdd8a3da
Fix the "isRelevant" logic in coderules typechecker.
2019-08-20 23:11:19 +02:00
Fedor Isakov
9178e8c913
Coderules-specific MessageViewTool and MessageLog for providing feedback.
...
Certain compromises have to be made: for one, it is assumed there is only one
project open and it is a MPSProject. Feedback is only reported to the messages
view and the view itself is not yet integrated into the main messages view.
2019-08-20 23:11:19 +02:00
Fedor Isakov
8017a97327
Adapt to changes in typechecking facade.
2019-08-14 13:29:12 +02:00
Fedor Isakov
684c218003
Flip "disabled" option to "enabled", false by default. Introduce property-controlled static flag.
2019-08-12 18:21:38 +02:00
Fedor Isakov
a26ab6541b
Disable coderules typechecker during model check test.
2019-08-12 18:21:38 +02:00
Fedor Isakov
45ae7a6a24
Fix build script imports and rebuild project.
2019-08-12 18:21:38 +02:00
Fedor Isakov
39c4499585
Refactor aspect lookup, introduce aspect clique to support multiple typesystems.
...
There might be several unrelated typesystems defined by languages imported into
a single model. A way to handle this is to use aspect cliques that correspond
to a collection of related aspects, which build a single typesystem.
2019-08-12 18:21:38 +02:00
Fedor Isakov
17544576ac
Introduce "disable typechecker" properties page. Implement typechecking coerce query.
2019-08-12 16:45:00 +02:00
Fedor Isakov
696d7dc226
Introduce coerce query kind.
2019-08-12 16:45:00 +02:00
Fedor Isakov
1e3917e787
Make dataform printer reusable.
2019-08-12 16:45:00 +02:00
Fedor Isakov
4c4c610531
Enable macro expansion on concept; null input produces empty builder.
2019-08-10 16:25:36 +02:00
Fedor Isakov
12acc300dc
Provisional implementation of typechecking queries over coderules.
2019-07-30 17:56:50 +02:00
Fedor Isakov
2ef8adfe5e
Switch to reactor 0.9.11
2019-07-30 13:48:08 +02:00
Fedor Isakov
9f2cc61cc4
Implement missing methods in TypecheckingQueries interface.
2019-07-30 12:22:52 +02:00
Fedor Isakov
3a48c47880
Migration: "update versions in descriptors".
2019-07-30 11:49:26 +02:00
Grigorii Kirgizov
b7b5ece832
Adjust notion of principal rule in analysis. Reenable assert in ProcessingStateImpl.
...
Now any rule matching on or activating principal constraints counts as principal.
2019-07-29 20:25:25 +03:00
Fedor Isakov
3132a8fa1d
Disable printing debug/trace info during tests execution.
...
Tests must not generate more info than is absolutely necessary.
Use "-Dcoderules.debug=true" and "-Dcoderules.inc.debug" when launching tests to enable debug output.
2019-07-29 17:48:20 +02:00
Fedor Isakov
ef7e3fa1a6
Drop "tagDetail" hack, use again string as a unique rule's tag.
2019-07-29 17:16:43 +02:00
Fedor Isakov
66c9222a95
Run migrations with MPS 2019.2 EAP3.
2019-07-26 17:27:18 +02:00
Fedor Isakov
745a20b572
Fix tests (all types in demo lang to be String).
2019-07-26 17:22:42 +02:00
Fedor Isakov
0f8d858748
Remove unnecessary calls to reactor lifecycle.
2019-07-26 17:18:37 +02:00
Fedor Isakov
ca894c9030
Move control over reactor lifecycle to app plugin.
2019-07-26 17:17:07 +02:00
Fedor Isakov
aec1bd1a2d
Refactor changes tracking, avoid NPE on already removed nodes.
2019-07-26 17:16:02 +02:00
Fedor Isakov
4e4e1f68ef
Fix buildscript dependencies.
2019-07-26 17:14:48 +02:00
Grigorii Kirgizov
11712c7069
Restrict the notion of principal rule (as effect, match journal is shorter now). It also positively affected reporting, so switch reporting to the new way.
2019-07-26 17:00:31 +02:00
Grigorii Kirgizov
9b49c3f053
Fix tests for incremental tc of BL. Add more tests for types with bounds. Temporarily revert reporting method to the old one.
2019-07-26 17:00:31 +02:00
Grigorii Kirgizov
0ab4e48da1
Fix hash collision in tests. Rename few usages of 'handler' to 'rulesList'.
2019-07-26 17:00:31 +02:00
Grigorii Kirgizov
ca84b0ae02
Add few more tests on wildcards.
2019-07-26 17:00:31 +02:00