Commit Graph

154 Commits

Author SHA1 Message Date
Fedor Isakov 77eb3f30c7 Implement a missing BH method 2022-06-13 11:11:57 +02:00
Fedor Isakov 874a2a4b4e Ensure rule tags have unique group name 2022-05-25 13:49:11 +02:00
Fedor Isakov 2f34591b0b Support list feature in recovery 2022-02-08 10:09:40 +01:00
Fedor Isakov 2e5d73b31e Add icons for typechecking roots and the aspect 2021-11-25 18:09:22 +01:00
Fedor Isakov d7f54a35fb Minor editor fixes 2021-11-25 12:07:43 +01:00
Fedor Isakov 2d48fb57f2 Fix editor: ensure correct constraints in head/guard/body 2021-11-25 12:07:43 +01:00
Fedor Isakov c27cafdf30 Fix editor: support changing isFree <-> isNonfree 2021-11-24 16:22:17 +01:00
Fedor Isakov d0d44b98c5 Minor editor fixes 2021-11-24 16:22:17 +01:00
Fedor Isakov 690e8e919c Fix editor: caret position and first argument to constraint 2021-11-24 16:22:17 +01:00
Fedor Isakov 9b59925e4f Fix editor: editable=false for keywords, focus attraction 2021-11-24 16:22:17 +01:00
Fedor Isakov 257bc196c3 Re-save all models 2021-10-26 17:46:40 +02:00
Fedor Isakov 2d52921561 Fix and optimize dependencies 2021-09-22 17:08:25 +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 42d9970172 Extend ValueFeature with type, deprecate getter 2021-09-21 17:54:50 +02:00
Fedor Isakov 5bd41f1098 Introduce typechecking term table 2021-08-17 09:30:35 +02:00
Fedor Isakov 4d06adf85b Rename isAssigned to isNonfree for consistency 2021-07-22 15:46:21 +02:00
Fedor Isakov 4ea1d0cadd Feature: isGround and isNonground predicates, MPSCR-94 2021-07-22 13:59:19 +02:00
Fedor Isakov e03a65760c Adjust style for fail constraint 2021-06-18 18:41:00 +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 0a7623fa3b Migration to LogicalItem for the rest of expressions 2021-05-04 18:24:30 +02:00
Fedor Isakov a9fc3db841 Migrate to TermFeatureOverrid to LogicalItem
Deprecate TFO.getter
Disable entering LogicalItemExpression
2021-05-04 18:24:29 +02:00
Fedor Isakov ff6b5ec6ae Apply migrations and rebuild project 2021-04-14 13:19:50 +02:00
Fedor Isakov 7fe5a5ad7a Auto-updated files after migrating to MPS 2021.1 EAP 2021-02-04 12:26:59 +01:00
Fedor Isakov c450462fa5 Drop "final" flag on term feature: unused 2021-01-23 16:59:45 +01:00
Fedor Isakov 4991536db1 Fix diff view showing insertion wrongly, dont assume vertical layout 2021-01-23 16:59:42 +01:00
Fedor Isakov 62e8e7d013 Switch to MPS 2020.3 release. 2021-01-08 11:00:02 +01:00
Fedor Isakov 5e147837ec Drop node pointer in QueryTemplate behaviour 2020-12-30 18:28:46 +01:00
Grigorii Kirgizov 27ed01c447 refactoring: Adjust uniqueTag usages for Rule.Tag refactoring
Fix rule basetag generation to coincide with templateName

Needed for PrincipalStore (occurrence cache) which uses
info about occurrence source rule template name.
2020-12-15 17:59:09 +03:00
Grigorii Kirgizov 1254ebd632 Handle case of query rules in PreambleInfo
Also process expand macro input for rule hash,
so that changed query rules (like one in testlang) get into
RulesDiff and could be updated with Preamble processing.
2020-11-18 11:36:28 +03:00
Fedor Isakov 32b11c0c7f Introduce memo expression to enable memoization of values.
During template application memo can be used to store results
of a computation in the session. The memo will be automatically
cleared on an event that invalidates the caches.
2020-07-30 17:14:40 +02:00
Grigorii Kirgizov 3eebe8cd03 Refactor creation of IncrProgramSpec: allow later spec config (for MPSCR-66)
IncrProgramSpec influencing program eval is built from two sources:
internal analysis results & typechecking options.
Providing spec builder instead of spec allows to combine these
sources later at program pipeline creation in TypecheckingService.

Commit accomodates to addition of IncrementalSpec.Enabled.Unsafe
Commit also simplifies ProgramAnalysis -related classes.
Renames BasicProgramAnalysis to PrincipalsAnalysis.
2020-07-28 18:53:41 +03:00
Grigorii Kirgizov 504261014a Modify principal constraint analysis: consider rules without origin (fixes MPSCR-64)
Also output warning on rules violating contract for non-principal rules
2020-07-22 15:27:46 +03:00
Fedor Isakov 29ffc46fa4 Introduce ProvideFeedbackOperation: enable providing feedback from templates.
Operations such as 'error' and 'warning' are available on input
node in templates and serve to report issues found during
template application, in contrast with those found during evaluation.
2020-07-13 18:14:12 +02:00
Fedor Isakov d5a259bbde Re-apply all re-runnable migrations (one fix). 2020-07-11 15:59:51 +02:00
Fedor Isakov 936190bca9 Apply migrations. 2020-07-11 15:13:08 +02:00
Grigorii Kirgizov ad9f02dd7d Fix rule name generation (consider query rules also). Sort results of principals analyzers
Also deprecate unsude 'queryName' prop in QueryTemplate
(it inherits from INamed.. so it has name, which is used)
2020-07-01 14:36:48 +03:00
Fedor Isakov 5c376168b4 Introduce match constraint.
Match constraint is provided for use cases where the intention
is to pattern-match a term capturing features into logical
variables.
A term constructor in the right-hand side of match constraint
is a pattern, and all its non-overridden features are
to be defined as wildcards.
2020-06-18 13:05:24 +02:00
Grigorii Kirgizov f3d62dbc94 Handle MacroTemplates in principal constraints analysis
It's possible to activate constraints in macros, so they must be also handled.
Also restrict a bit principal rules analysis: consider only rules with template input.
2020-06-08 19:02:20 +03:00
Fedor Isakov 5f6ea9e6c1 Fix NPE in checking rule. 2020-05-25 11:03:39 +02:00
Grigorii Kirgizov 400198f965 Adjust principal constraints analysis to not consider node refs wrapped in terms
It makes definition of principal constraint clearer:
principal constraint is a constraint that has at least one arg
of type node<> and passes to it ruleOrigin in at least one rule.

Such constraints are most likely meant to define relations
of nodes to terms, e.g. `typeOf` -- which is what we're interested in.

At the same time semantics of values inside terms is less defined.
TermFeatures are also untyped, and so complete analysis of
ValueFeatures would require full code traversal of coderules program
to find out whether a value feature is used to carry smth of `node` type.

Relevant to MPSCR-62.
2020-05-22 21:40:03 +03:00
Grigorii Kirgizov 9bbcf6ecef Allow terms to inherit features from ancestor terms
Avoides the need to exactly duplicate features of ancestors.
Opens possibility to match on super-terms
with partially provided (overriden) features.

For example, suppose there's `typeParameterized(child: param)`
term which is extended by `classifier` and `methodSignature`.
Then it becomes possible to write a common rule for both terms,
matching on `typeParameterized(param=[Smth])`.
2020-05-21 16:31:36 +03:00
Fedor Isakov 14780b5561 Apply automatic migrations. 2020-05-09 15:04:25 +02:00
Fedor Isakov d3a72049e8 Drop deprecated stuff from coderules lang. 2020-05-05 15:58:48 +02:00
Fedor Isakov 2dc2191be3 Editor improvement: auto-substitute name from target concept for rule templates. 2020-05-05 10:19:38 +02:00
Fedor Isakov 4666ca5349 Deprecate an obsolete concept. 2020-05-05 10:19:38 +02:00
Fedor Isakov f43b262e7f Introduce helper behaivour methods to be used from typesystem. 2020-05-05 10:19:38 +02:00
Grigorii Kirgizov f6ebd46cb6 Disallow using OriginSpec inside rule bodies (such use case isn't handled) 2020-05-04 15:16:47 +03:00
Grigorii Kirgizov 1ba46cef88 Fix analysis tests
Test model didn't containe needed nodes (RulesList-s) as roots
2020-05-01 18:15:15 +03:00
Grigorii Kirgizov aaa4d46655 Fix principal constraints/rules analysis to handle extended langs
Before it incremental typechecking for extending langs was failing
2020-05-01 13:38:12 +03:00
Fedor Isakov 866cd3fb04 Support extends relation between term tables.
A term table is now allowed to extend another term table.
Term prototypes can be imported through extends relation.
2020-04-28 12:54:35 +02:00