Fedor Isakov
be76070914
Replace unification with match where applicable, minor cleanup.
...
Replace unification with the intent of capturing term feature
with match constraint.
Drop unused term feature from head pattern.
Provide better context for failed class inheritance test.
2020-06-18 13:05:24 +02:00
Fedor Isakov
19994dab9f
Introduce comparable constraint.
...
Comparable should only check if the two
types are in any relation (one converts
to the other) and report error if check fails.
2020-06-18 13:05:23 +02:00
Grigorii Kirgizov
4876c22282
Refactor single root of incremental tests into several, move IncrTestBuilder
2020-06-16 14:14:46 +03:00
Grigorii Kirgizov
a03651dd31
Refactor IncrementalLauncher in tests to use TypeIndex (as on runtime)
2020-06-15 13:03:09 +03:00
Grigorii Kirgizov
62d31743ed
Refactor incremental tests
2020-06-15 11:14:47 +03:00
Grigorii Kirgizov
f81d8ac44e
Fix missing lang import on tests model
2020-06-09 12:00:37 +03:00
Grigorii Kirgizov
dcb8e5ac53
Fix "link out of search scope" in collections types
2020-06-09 02:19:42 +03:00
Grigorii Kirgizov
1631f77e74
Implement typechecking for j.m.bl.collections & tests for it
2020-06-08 12:29:37 +03:00
Grigorii Kirgizov
5004dc2340
Abstract into bl typechecking of types having runtime representation (e.g. sequence)
...
See term 'runtimeType' and corresponding rule in ConversionMain
2020-06-05 21:11:37 +03:00
Grigorii Kirgizov
3b456a9063
minor refactorings in bl typesystem
2020-06-05 21:11:27 +03:00
Fedor Isakov
490eb66a3e
Disable Thinlet test, too many timeouts.
2020-06-04 12:40:34 +02:00
Fedor Isakov
161beb6a4d
Refactoring in hierarchy graph. Introduce various abstractions.
...
Hierarchy graph vertex can represent LUB as a simple
collection of inheritance paths.
Abstract intefaces allow to model operations such as finding
the LUB in an abstract way.
Greatly simplify code.
2020-06-01 10:18:04 +02:00
Fedor Isakov
f96a014543
Minor refactoring: code simplification and cleanup.
2020-05-25 13:15:29 +02:00
Fedor Isakov
3ff038e4a3
Drop obsolete and unused code. Tests superceded by new tests.
2020-05-25 13:15:25 +02:00
Fedor Isakov
71fd7d7301
Switch typechecking templates to use the refactored facade.
2020-05-25 12:38:05 +02:00
Fedor Isakov
fc10afdae0
Fix typo in typechecking rule.
2020-05-25 11:03:39 +02:00
Fedor Isakov
35b09d3e2e
Fix build script and regenerate.
2020-05-25 11:03:39 +02:00
Fedor Isakov
b4a5b4cec4
Refactor various utilities into facade class.
...
Introduce HierarchyGraph and its specialization,
ClassHierarchyGraph, as a facade to all tasks related to
finding paths and LUB of types.
2020-05-25 11:03:39 +02:00
Fedor Isakov
1aa5608b34
Move files for wrongly placed coderulesExt lang.
2020-05-23 15:25:59 +02:00
Grigorii Kirgizov
6f9337e5cf
minor: consider error() term in containedIn relation
...
This term marks that somewhere error has been already handled
and serves to avoid further errors.
2020-05-22 22:37:48 +03:00
Grigorii Kirgizov
00dc426f43
Consider case of NestedNewExpression for class creators (MPSCR-29)
2020-05-22 22:36:10 +03:00
Grigorii Kirgizov
a4901bb730
Change signature of `typeVarBound` constraint to treat it as principal
...
Recent commit with change to def of pr. constraint
made typeVarBound non-principal. so fix it.
2020-05-22 21:40:03 +03:00
Grigorii Kirgizov
1aa07397d4
minor: document one type inference rule to avoid confusion
2020-05-22 21:39:15 +03:00
Grigorii Kirgizov
42f0d06063
Refactor duplicate code for checking method call into call macro
...
Also typecheck method call arguments with macro instead of a rule
2020-05-22 21:39:15 +03:00
Grigorii Kirgizov
c3cf1e5111
Complete type inference for closure params wit inst macro, add tests, fix few minor issues
...
Related to MPSCR-20 & MPSCR-29.
2020-05-22 21:39:14 +03:00
Grigorii Kirgizov
fe58f39b56
Introduce macro for type scheme instantiation, refactor existing rules with it
...
Now rules concerned with generics handle type vars from enclosing scope.
Complete typechecking of BaseMethodCall: consider static/nonstatic cases.
Complete typechecking for class creators, handling type vars from cls & ctor.
Refactor rules for EnumConstantDeccl & ClassifierType.
Related to MPSCR-20 & MPSCR-29.
2020-05-22 21:38:55 +03:00
Grigorii Kirgizov
4e43c924c6
Inherit classifier term from `parameterized` and migrate ListFeature role usages
2020-05-21 16:38:44 +03:00
Grigorii Kirgizov
1ac16ed0b9
Fix left usages of classifier term to explicitly provide type parameters
2020-05-21 16:38:39 +03:00
Grigorii Kirgizov
e2b3c21b2f
Change semantics of implicit ListFeature: treat as wildcard, not as empty list
...
Motivation is that implicit (non-overriden) list features must unify
with list of any length. Consider an example:
`classifier(cls: node-ptr/A/) = classifier(cls: node-ptr/A/ param: [B,C])`
With previous approach it would fail, which seems counter-intuitive to me.
So, if empty list (e.g. of type parameters) is meant, then it must be
specified explicitly.
There's one thing to remember, though: such wildcard list features
won't match with MetaLogicalArrays in rule heads.
(e.g. see dpromote_* rules and consider what happens when
a classifier with unbound `parameter` feature comes in)
2020-05-21 16:38:36 +03:00
Grigorii Kirgizov
3a99a1569a
Add typechecking for AlternativeType. Move & refactor genDecl macro a bit.
...
Introduce common 'parameterized(child typeParams)' term
to allow unifying processing of GenericDeclarations.
Collect type variables from enclosing GenericDeclaration.
Will be needed to simplify instantiation of nested generic decls
(e.g. generic method inside generic class) using `genDecl`
machinery instead of TypeVarSubstitution.
2020-05-21 16:38:30 +03:00
Grigorii Kirgizov
3047926ce4
Fix typechecking for vararg param decls: treat them as arrays.
2020-05-21 16:31:41 +03:00
Grigorii Kirgizov
8b07402d48
Refactor checking type arguments into call macro. Fix type decls for checkArgs rules
2020-05-21 16:31:34 +03:00
Grigorii Kirgizov
9051e71f84
Handle case of type vars having other type vars as bounds for inference
...
Also uncomment hasBound_check rule which now is required
to check such type vars when their bounds become ground.
2020-05-21 16:31:27 +03:00
Grigorii Kirgizov
08743b444c
Avoid producing typeOf in checkVariableDecl for unknown types (types without macros)
2020-05-21 16:31:18 +03:00
Grigorii Kirgizov
ac2e3f97d2
Add typechecking for implicitly typed closure arg, add tests
2020-05-14 20:07:01 +03:00
Fedor Isakov
9c234cac2a
Quickfix: add support for AlternativeType.
2020-05-09 16:05:48 +02:00
Fedor Isakov
82f0229aca
Rebuild project.
2020-05-09 15:08:47 +02:00
Fedor Isakov
14780b5561
Apply automatic migrations.
2020-05-09 15:04:25 +02:00
Fedor Isakov
d1163fc883
Open and rebuild the project with MPS 2020.1.
2020-05-09 15:02:20 +02:00
Fedor Isakov
f3b16186e6
Fix build scripts and regenerate.
2020-05-09 10:54:18 +02:00
Fedor Isakov
acd6234415
Force save all.
2020-05-09 10:54:18 +02:00
Grigorii Kirgizov
e1af32b97c
Add tests for closuresExt concerned with yield and sequence, reproduces MPSCR-60
2020-05-07 01:28:14 +03:00
Grigorii Kirgizov
e6b1fe12a7
Don't generate main closureLiteral rule when there's error with return vs. yield
2020-05-07 01:28:14 +03:00
Fedor Isakov
76991aabe7
Fix dependencies among rule tables.
...
Observing the invariant: whenever a constraint is used in
rule's head, the rule table containing it must extend the
one that constraint.
Also drop unused constraint from the head in ConversionFunctionIFace.
2020-05-05 16:23:13 +02:00
Fedor Isakov
2c363f85f4
Tidy up helper methods contract, drop unnecessary method.
...
BaseHelper.getListContents() accepts a dataform that must be
an instance of ListNode or be resolved to one via DataFormUtil.ground().
2020-05-05 15:58:48 +02:00
Fedor Isakov
6904af04ce
Drop instances of deprecated concept.
2020-05-05 15:58:48 +02:00
Grigorii Kirgizov
54c9af37a3
Add checking of loop statements in blExt
2020-05-05 16:45:27 +03:00
Grigorii Kirgizov
c388aa25b6
Reorganise rule table extends dependencies in blExt
...
Mainly, avoid extending TypeOf by ConversionMain (unnecessary dependency).
It's also more logical structure: tables defining declarations go first, then typeOf-related.
So rule tables which require only decls can depend only on such tables.
Core tables extends relationship now:
TypeBound <- CheckAll <- Generics <- TypeOf
TypeBound <- ConversionMain [<- other langs' conversions]
2020-05-05 16:45:27 +03:00
Fedor Isakov
66d2896fff
Ensure type variable bounds are processed in coerce query.
...
This fixes constraint errors in model check while running
typechecking with coderules.
2020-05-05 13:20:59 +02:00
Fedor Isakov
a15a6b3f1d
Fix target statement (not allowed within constraint rule).
2020-05-05 10:19:38 +02:00
Fedor Isakov
ab9a22a013
Rebuild project.
2020-05-05 10:19:38 +02:00
Fedor Isakov
ea687efb21
Types for j.m.logic language.
2020-05-05 10:19:32 +02:00
Grigorii Kirgizov
27b7917a1a
Add conversion of closures to functional classifiers, add tests
2020-05-04 16:38:00 +03:00
Grigorii Kirgizov
c6e20d00c2
Handle case of free vars for ternary operation and primitive subtyping (needed for closures)
2020-05-04 15:16:47 +03:00
Grigorii Kirgizov
590f3ed6ed
Fix usages of OriginSpec: can't use them inside ConstraintRule bodies. Use convertsToSafe instead
2020-05-04 15:16:47 +03:00
Grigorii Kirgizov
aa40ca0e01
Fix function conversion to allow coerceTo queries pass
2020-05-04 15:16:47 +03:00
Grigorii Kirgizov
36a85d5c2c
Add bl.collectionsExt dependency on bl.function lang; upd mpscore build script and build.xml
2020-05-04 15:16:47 +03:00
Grigorii Kirgizov
f7a9c73199
Refactor out lang dependency on function type analogously to sequence type
...
As closures typesystem depends on collections due to sequence type,
so collections typesystem depends on closures due to function type.
E.g. consider typechecking of SequenceCreator.
2020-05-04 15:16:47 +03:00
Grigorii Kirgizov
898087f427
Fix term table in closuresExt to extend blExt term table and use imported sequence type
2020-05-04 15:15:35 +03:00
Grigorii Kirgizov
72d48d76e3
Add typechecking for recursive closure invoke expression, add tests & fix older ones
2020-05-04 15:15:28 +03:00
Grigorii Kirgizov
3284d2c331
Add typechecking of ClosureLiteral and invoke expressions
2020-05-02 14:04:34 +03:00
Grigorii Kirgizov
19ab82586f
Add function type subtyping
2020-05-02 14:04:34 +03:00
Grigorii Kirgizov
b9fe7439bb
Add empty closuresExt files for lang and test solution, upd bulid script
2020-05-02 14:04:34 +03:00
Grigorii Kirgizov
3101d22a5b
Upd mpscore build script and build.xml
2020-05-02 13:44:19 +03:00
Grigorii Kirgizov
735276d2a2
Add import/export constructs for sequence type in collectionsExt to enable basic tests
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
8921c44a8e
Add first tests for sequence type conversions
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
451b892b9f
Add empty models for collectionsExt lang and tests
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
625ea8c049
Add j.m.bl.sequenceBase language with basic sequence typing rules
...
This lang doesn't depend on collections lang and extracts
common dependencies of closures and collections langs:
sequence term and its basic typing rules.
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
69457dc747
minor fix: extend term tabl from blExt in tuplesExt
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
bd1e0b61e5
minor: rewrite errorType constraint in blExt as call macro
2020-05-02 13:43:03 +03:00
Grigorii Kirgizov
a2f3a5b824
Avoid leaving logicals unassigned in case of error: assign error type explicitly
...
Needed to disambiguate free variables that are not yet inferred
from those which has been already processed with error.
Also more properly handle case of trivial return type inference
2020-04-30 15:38:34 +03:00
Grigorii Kirgizov
aca2b3b8d9
BL typesystem: forbid conversion to/from void type
...
There's special constraint 'isCompatbile' to handle void.
Conversions with void can arise from closure types returning nothing.
2020-04-30 15:38:34 +03:00
Grigorii Kirgizov
125d051534
Fix check for return statements given possibility of nested method-like decls
...
Also fuse two bl rules for return statement and last expr.
Output feedback on return stmt, not returned expr,
because it also handles case of erroneous void return
2020-04-30 15:38:34 +03:00
Grigorii Kirgizov
5dcc71d2a5
Separate typing or return statement from checking its compatibility with method type
...
For convenience: to always get typeOf(return)
to unconditionally match on it (eg in closures lang)
2020-04-30 15:38:34 +03:00
Fedor Isakov
77d35bfaa2
Manually migrate all queries to new table format.
2020-04-23 10:15:39 +02:00
Fedor Isakov
f23ea05b65
Update query templates to not use QueryParameterReference.
...
QueryParameter is always referring to Query instance passed
to the template.
Drop QueryKind and parameter declarations from query templates.
2020-04-22 11:43:37 +02:00
Fedor Isakov
46fe463118
Update instances of query templates to include reference to Query type.
2020-04-22 11:25:14 +02:00
Fedor Isakov
98f1a0a6d2
Apply one outstanding migration. Force save all models.
2020-04-19 16:30:11 +02:00
Grigorii Kirgizov
22921b9b17
Clean unneded require statements
...
Relies on facts that children of origin are always processed and
that all nodes mentioned in rule bodies are required implicitly.
2020-04-19 13:43:05 +03:00
Grigorii Kirgizov
0e0438cf3c
Provide necessary dependencies for correct incr typechecking of cls hierarchies, fixes MPSCR-55
...
Now subclassPaths rule depends on a declaration of classifier,
which allows to track justifications dependency and invalidate
rule on incremental typechecking.
Similarly, rule for declaration now depends on all super classifiers.
2020-04-19 13:43:05 +03:00
Grigorii Kirgizov
b07fdd6735
Reproduce MPSCR-55
2020-04-19 13:43:01 +03:00
Grigorii Kirgizov
4bb1b9d3d8
Apply some migrations after rebase on master
2020-04-19 13:42:53 +03:00
Fedor Isakov
9f7d60e7c1
Reorder macro template declarations: move abstract concept to the bottom.
2020-04-16 12:25:59 +02:00
Fedor Isakov
7cc19bdece
Minor code fix: remove unnecessary wrapping of logical var.
2020-04-15 11:14:38 +02:00
Fedor Isakov
eb4862eb48
Force save all models -- update resolve info.
2020-04-14 16:20:05 +02:00
Fedor Isakov
fcbdbe7e47
Attempt to fix gradle task deps graph.
2020-04-13 18:00:15 +02:00
Fedor Isakov
35fd816cbc
Update all usages of moved concepts.
2020-04-13 18:00:15 +02:00
Fedor Isakov
fd2043e047
Update build scripts.
2020-04-13 18:00:15 +02:00
Fedor Isakov
1336e82065
Fix wrongly used logical item expression.
2020-04-13 17:58:34 +02:00
Fedor Isakov
5b1449fa82
Update all usages of moved concepts.
2020-04-13 17:58:34 +02:00
Fedor Isakov
296b3e9271
Re-apply all rerunnable migrations.
2020-04-13 17:58:33 +02:00
Fedor Isakov
a1c98b5bf0
Apply all outstanding migrations.
2020-04-13 17:58:33 +02:00
Fedor Isakov
52bca36d32
Rebuild project.
2020-04-13 17:58:33 +02:00
Fedor Isakov
7413e9e387
Force save all models.
2020-04-13 17:58:33 +02:00
Fedor Isakov
cac5573cb9
Drop instances of deprecated concepts in baseLangExt
...
.
2020-04-13 17:58:33 +02:00
Fedor Isakov
d22abb3835
Drop instances of deprecated concepts in lambdacalc.
2020-04-13 17:58:33 +02:00
Grigorii Kirgizov
145aa79753
Regenerate build.xml for mpscore
2020-04-13 15:10:37 +03:00
Grigorii Kirgizov
bd87873160
Move baseLanguage.tuplesExt lang to 'samples' and upd build script
2020-04-13 14:36:37 +03:00
Grigorii Kirgizov
8dfcff1844
Add typechecking for indexed tuples (new language .tuplesExt and tests)
2020-04-08 23:24:55 +03:00
Fedor Isakov
4e12f7bf3b
Migrate baseLanguageExt sample to new expand/call macros.
2020-03-31 18:44:07 +02:00