Commit Graph

486 Commits

Author SHA1 Message Date
Fedor Isakov 73d50ef39c Add typing rules for string operations in BL 2021-07-22 13:59:19 +02:00
Fedor Isakov 17e1bc4589 Applied migration 2021-06-29 14:51:10 +02:00
Fedor Isakov 9826290f78 Fix building and packaging the plugins 2021-06-21 17:50:00 +02:00
Fedor Isakov 9527a097b8 Migrate to the latest MPS release, apply migrations 2021-06-18 18:41:01 +02:00
Fedor Isakov 1e3c67949d Fix BL types: conditional op, raw types, capture conversion 2021-05-18 13:07:03 +02:00
Fedor Isakov 0cea4073cc Fix BL types: ensure proper type inference and incremental typechecking 2021-05-18 12:32:03 +02:00
Fedor Isakov 0691ca6a1b Drop last usage of "kind" feature 2021-05-13 15:54:44 +02:00
Fedor Isakov f623846f6c Fix function types: observe function type variance, drop wildcards 2021-05-13 15:54:44 +02:00
Fedor Isakov 6d655c4707 Update resolve info in models after renaming 2021-05-13 15:54:44 +02:00
Fedor Isakov bb4aa7e6e1 Fix sequence types: correctly process raw types 2021-05-13 15:54:44 +02:00
Fedor Isakov 65ec6d9d35 Fix BL types: reimplement raw type, many small fixes
Fix type inference from containment, change priority for var-ground containment.
Fix variable reference type, property, plus operation, binary ops.
Fix type variables and bounds.
Fix checking overridden methods.
Introduce stripBounds for cleaning up wildcards.
Introduce containment string ≤ String.
2021-05-13 15:54:44 +02:00
Fedor Isakov d5a91b91e5 Fix closures types: convertsTo of function type
Instead of solving convertsTo for function type in functional domain,
try to find the expected classifier type and solve for it instead.
2021-05-13 15:54:43 +02:00
Fedor Isakov 33476c837c Minor fix coderules types: ensure correct incremental processing 2021-05-13 15:54:43 +02:00
Fedor Isakov 582d62749e Minor fix generatorContext types: avoid exception on rule application 2021-05-13 15:54:43 +02:00
Fedor Isakov fc7d97f015 Fix closures types: observe function type's inherent variance 2021-05-13 15:54:43 +02:00
Fedor Isakov 7e4eff91de Fix smodel types: more precise conversion to/from classifier 2021-05-13 15:54:43 +02:00
Fedor Isakov cba508dc01 Fix collections types: indexOf accepts Object 2021-05-13 15:54:43 +02:00
Fedor Isakov 2ae85d4dae Types for j.m.lang.pattern language 2021-05-13 15:54:43 +02:00
Fedor Isakov 5a6db97aed Types for j.m.lang.scopes language 2021-05-13 15:54:43 +02:00
Fedor Isakov 827089d8ae Fix smodel types: ofconcept, attribute access, children 2021-05-13 15:54:43 +02:00
Fedor Isakov abbbfe5141 Fix behaviour types: fix wrong term 2021-05-13 15:54:43 +02:00
Fedor Isakov ab28b66981 Fix coderules types: avoid exception 2021-05-13 15:54:43 +02:00
Fedor Isakov 71cb954cba Temporary stub for NamedTuple type, to be completed later 2021-05-13 15:54:43 +02:00
Fedor Isakov a08c730ece Migrate to NodeRefItem 2021-05-13 15:54:43 +02:00
Fedor Isakov 637da7d966 Apply migration and rebuild project 2021-05-04 18:24:30 +02:00
Fedor Isakov ea6e930954 Apply migration and rebuild project 2021-05-04 18:24:29 +02:00
Fedor Isakov 47e6e07039 Refactor processing of inference variables
Introduce hasTarget and resolveVar constraints for delayed resolving
of inference variables. In invocation context variables are not
inferred eagerly, but wait for the end of all conversions, and then
resolved via resolveVar.
2021-05-03 13:14:11 +02:00
Fedor Isakov e488399229 Minor refactoring in collections types 2021-05-03 13:14:11 +02:00
Fedor Isakov 998fa3b925 Fix BL types: make capture processing generic, couple of minor fixes 2021-05-03 13:14:11 +02:00
Fedor Isakov ae63863299 Minor code fix to ensure typechecking 2021-04-29 14:53:19 +02:00
Fedor Isakov 6a3834d91d Drop instances of a deprecated concept 2021-04-29 14:53:19 +02:00
Fedor Isakov 7cef550a08 Fix logic and coderules types: logical and termlist conversions to classfier 2021-04-29 14:53:19 +02:00
Fedor Isakov d407eb2676 Fix sequence types: support covariance with upper bound type 2021-04-29 14:53:19 +02:00
Fedor Isakov 8df5c22c8b Fix pattern terms used in typeOf: always specify concept
For SModel types that reference AbstractConceptDeclaration
a type term created without specifying the reference
automatically becomes a pattern.
A pattern can't be used in typeOf, so the default
concept (BaseConcept) is provided explicitly.
This may be later refactored into a default value in the term
table.
2021-04-29 14:53:19 +02:00
Fedor Isakov d45ef7815a Fix BL types: avoid failing on incomplete source data 2021-04-29 14:53:19 +02:00
Fedor Isakov 1c82991112 Ensure classifier type is created as pattern where applicable
List features in a term are by defualt created as empty list.
When a pattern is required, one must provide explicitly a
wildcard variable to capture either NIL or CONS list term.
2021-04-28 08:55:00 +02:00
Fedor Isakov 2f25f5566b Fix coderules types: avoid failing on incomplete source 2021-04-28 08:55:00 +02:00
Fedor Isakov c893d3280e Fix collection types: support DowncastExpression 2021-04-28 08:55:00 +02:00
Fedor Isakov cf386d848c Fix smodel types: make gendecl processed correctly, generify dpromote 2021-04-28 08:55:00 +02:00
Fedor Isakov 0eb826d00e Minor fix: typesystem types 2021-04-28 08:55:00 +02:00
Fedor Isakov da11b2cc76 Fix smodel types: enable capturing patterns for coerce, minor fix 2021-04-28 08:55:00 +02:00
Fedor Isakov 2d98b4cf67 Fix types for j.m.l.behavior -- rename sidekick language 2021-04-28 08:55:00 +02:00
Fedor Isakov fa795caedc Fix smodel types: correctly process lub type, other minor stuff 2021-04-28 08:54:25 +02:00
Fedor Isakov c6c9a6e281 BL types: drop boxing/unboxing for strong converts/coerce queries 2021-04-28 08:54:25 +02:00
Fedor Isakov 870966bd70 Types for j.m.lang.script language 2021-04-28 08:54:25 +02:00
Fedor Isakov a9db172297 Smodel types: conversion for concept and conceptNode types 2021-04-28 08:54:25 +02:00
Fedor Isakov fceef17a64 Fix typechecking errors 2021-04-28 08:54:25 +02:00
Fedor Isakov 7d0e765381 Fix coderules types
Require statement accepts node-ptr
Fix coderules types: fix logical type in LateParameter
2021-04-28 08:54:25 +02:00
Fedor Isakov 118602b2fd Fix BL types: classifier type with other types as parameters
Also fix code constructs that caused typechecking errors.
2021-04-28 08:54:25 +02:00
Fedor Isakov c0154026ef WIP Fix smodel types: reflective conversion 2021-04-28 08:54:25 +02:00
Fedor Isakov a204df222a Optimize BL types and queries
Make expectType optional (auxiliary).
Drop checkDecls from typeof query (unnecessary).
2021-04-28 08:54:25 +02:00
Fedor Isakov d918fa5c12 Optimize BL types
Switch to pull style boundOf instead of typeVarBound.
Drop importDecls.
2021-04-21 10:45:09 +02:00
Fedor Isakov bf7939b350 Fix logic types: check for null reference 2021-04-19 22:55:09 +02:00
Fedor Isakov 09149fd688 Types for j.m.l.smodel.query lang 2021-04-15 18:06:07 +02:00
Fedor Isakov 2f4f3dae6f Minor optimization in smodel types: pull-style constraint
Instead of reactively create push-style constraint conceptHierarchy,
make it available on request, pull-style.
2021-04-15 16:56:11 +02:00
Fedor Isakov ff6b5ec6ae Apply migrations and rebuild project 2021-04-14 13:19:50 +02:00
Fedor Isakov 6ed5c3329d Fix typing errors: specify correct type annotations 2021-04-14 11:59:09 +02:00
Fedor Isakov 700a7f56b4 Fix generator types 2021-04-14 10:55:29 +02:00
Fedor Isakov 8dbe0c212d Fix smodel types 2021-04-14 10:54:10 +02:00
Fedor Isakov 3a70382202 Fix typesystem types: support for meet/join 2021-04-14 10:53:41 +02:00
Fedor Isakov e76dab0d84 Fix logic and coderules types 2021-04-14 10:53:17 +02:00
Fedor Isakov c0601cb099 Optimizing types for more efficient evaluation
Replace "push" style genDecl constraint with "pull" schemeOf.
Mark rules as "auxiliary" to avoid these being included in
processing as dependencies.
2021-04-12 12:47:44 +02:00
Fedor Isakov 3793b78efb Types for j.m.baseLanguage.classifiers 2021-04-08 08:55:33 +02:00
Fedor Isakov 27420433dc Types for j.m.lang.behavior 2021-04-08 08:55:33 +02:00
Fedor Isakov 5c13129daa Fix type of logical variables in coderules types 2021-04-08 08:55:32 +02:00
Fedor Isakov 65b32a4f48 Fix lub processing in BL types 2021-04-08 08:54:46 +02:00
Fedor Isakov 1eadb46611 Fix smodel types: assign void type to operations w/o returned value 2021-04-08 08:54:22 +02:00
Fedor Isakov d7ff661670 Types for j.m.l.test lang 2021-04-08 08:53:29 +02:00
Fedor Isakov 105fe1dd7e Fix dataform type conversion to term/termlist 2021-04-08 08:51:39 +02:00
Fedor Isakov 6b3e74dda2 Fix conversions in tuple types 2021-04-08 08:50:50 +02:00
Fedor Isakov f5b4b0edb0 Fix binary op in collections lang 2021-04-08 08:50:28 +02:00
Fedor Isakov 693c760618 Add types for j.m.l.test language. 2021-03-23 12:48:07 +01:00
Fedor Isakov 5fc019caca Mark an exhastive check rule as "auxiliary" to avoid including it as dependency. 2021-03-08 12:34:40 +01:00
Fedor Isakov a9ff6730ca Fix concept type conversion to classifier with undefined concept. 2021-03-08 12:34:40 +01:00
Fedor Isakov c36679bcc6 Fix logic inconsistent type error
Naive check won't suffice to ensure multilogical are used properly.
Need more sophisticated type check.
2021-03-08 12:34:39 +01:00
Fedor Isakov 81831db86a Move experimental controlflow aspect to a separate language 2021-02-06 15:28:03 +01:00
Fedor Isakov dee5db0e96 Drop instances of TermFeature.final property 2021-02-04 18:01:10 +01:00
Fedor Isakov ed55370a01 Fix model imports (hamcrest lib has been moved to another solution) 2021-02-04 12:27:55 +01:00
Fedor Isakov 7fe5a5ad7a Auto-updated files after migrating to MPS 2021.1 EAP 2021-02-04 12:26:59 +01:00
Fedor Isakov ecf7eec55a SModel types: fix type of isSubtypeExpression 2021-02-04 08:51:00 +01:00
Fedor Isakov 2f0f2e5b13 BL types: support coerce to target type query kind 2021-02-04 08:51:00 +01:00
Fedor Isakov 4d1cdacfe2 BL types: avoid failure on typechecking BaseMethodCall
BaseMethodCall doesn't always have an enclosing classifier.
2021-02-04 08:51:00 +01:00
Grigorii Kirgizov 4dac9e794a Fix assignment of 'null' ret type in closures with insufficient infer info. Add require. 2021-01-29 13:39:35 +03:00
Fedor Isakov 2b46ab0413 BL types: ensure any type converts to Type 2021-01-23 16:59:46 +01:00
Fedor Isakov 2b6de60ebc BL types: Drop runtimeType term and its usages 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 0a77dcb33b Coderules types: fix unifiable relation, add missing typing rules 2021-01-06 12:43:55 +01:00
Fedor Isakov a9643c03b8 Logic types: fix indexed variable, make logical a supertype of its parameter 2021-01-06 12:43:55 +01:00
Fedor Isakov aec8c3f9d9 SModel types: type for concept method call 2021-01-06 12:43:55 +01:00
Fedor Isakov 143fb9cf57 Generator lang types: fix a typo 2020-12-30 18:28:46 +01:00
Fedor Isakov 6f92d666f7 BL types: a few fixes, stabilize typechecking
Support Type type.
Simplify depdendency of var decl to its type.
Covariant subtyping for UpperBoundType.
Straightforward dependencies on type's parameters.
Specify BaseConcept as general type's concept.
Fix method reference.
2020-12-30 18:28:46 +01:00
Fedor Isakov 4acae7a1b7 SModel types: minor fixes
Support SConceptLiteralType.
Drop rogue .pointer operation.
Build proper term for enumMember type.
2020-12-30 18:28:46 +01:00
Fedor Isakov 67c208a360 Drop support for a few concepts that have been dropped 2020-12-27 21:04:51 +01:00
Fedor Isakov 0584d05c4f Drop support for a concept that has been apparently dropped upstream 2020-12-27 20:42:07 +01:00
Fedor Isakov f5c9ed7c4b Temporarily change the extends clause of Array rule table
This particular extends clause breaks an internal invariant
of rules plan, namely the topological sorting of rule tables.
This results in broken rule index, which needs to be fixed.

Also, disable a suspect rule that relies no typeof()
*not* being present, which is a transient condition.
2020-12-27 16:39:22 +01:00
Fedor Isakov d87afd868e Closure types: use lub to compute the type of closure literal
Multiple "exit points" in closure literal may have different types.
Calculate lub of these types and use it as returned type.
2020-12-27 16:04:06 +01:00
Fedor Isakov 182ea97cc1 BL internal types: support internal class 2020-12-27 16:04:06 +01:00
Fedor Isakov 2ef3176bc2 BL types: extend lub to primitive types via boxing 2020-12-27 16:04:06 +01:00
Fedor Isakov 621cdaa912 Implement lub for sequence type
Using the fact that sequence type is covariant, just forward
to lub for parameters.
2020-12-27 16:04:06 +01:00
Fedor Isakov 70d6dfefa1 Fix failing generation by disabling typechecking of cast expression
Cast expression must check the type of the argument expression
and ensure comparabitiy of types.
2020-12-27 16:04:06 +01:00