Commit Graph

838 Commits

Author SHA1 Message Date
Fedor Isakov 2cf2718484 Make rules auxiliary to reduce rules application scope 2023-06-12 12:01:02 +02:00
Fedor Isakov 0fcb804c42 Avoid boxing prim types when converting 2023-05-03 10:31:55 +02:00
Fedor Isakov 4fd280f06e Fix closure type inference: infer result type
Proceed with the closure result type as with other inferrable types:
declare as inference var and resolve at the end of processing.
2023-05-03 10:31:55 +02:00
Fedor Isakov 8401363109 Fix recovery of raw types: clear parameter list 2023-05-03 10:31:55 +02:00
Fedor Isakov 6ea8c0e69d Fix smodel types 2023-04-14 15:12:06 +02:00
Fedor Isakov 39dedccd02 KotlinRefs types: fix kt constructor type 2023-04-10 17:51:34 +02:00
Fedor Isakov 2d9027d431 Rebuild project 2023-03-27 17:22:51 +02:00
Fedor Isakov 75287824ec BL Types: construct raw type for erasedType's bound; avoid recursion. MPSCR-129 2023-03-03 17:08:59 +01:00
Fedor Isakov 7daccbe1ad Fix dangling reference 2023-03-03 17:07:24 +01:00
Fedor Isakov 40f8d69896 Rebuild project with latest MPS 2023.1 EAP 2023-03-02 17:03:01 +01:00
Fedor Isakov 03161ea3eb Fix recursive call when gathering classifiers hierrarchy 2023-02-23 16:32:23 +01:00
Fedor Isakov d531c6a5ad Run Migration Assistant 2023-02-22 13:52:02 +01:00
Fedor Isakov 4db818637f Rebuild project 2023-02-22 13:51:02 +01:00
Fedor Isakov 4c847f4d3b Temporarily disable a test that produces too much noise 2022-11-23 14:03:19 +01:00
Fedor Isakov 13da45a973 Fix subtle issues with type inference, introduce more
As type variables are made to be resolved later, some errors may "escape"
their respective scope, such as classifier type definition. This needs to be
addressed separately.
2022-11-23 14:03:19 +01:00
Fedor Isakov 34452407f4 Ignore runtime error type in a test 2022-11-23 14:03:19 +01:00
Fedor Isakov 5d5cea10e6 Update error in test data model to reflect actually reported error 2022-11-23 14:03:19 +01:00
Fedor Isakov 25b82ebfb1 Redo fix of closure param type inference, drop typeScheme/2
The solution for inferring the type of a closure parameter using
auxiliary typeScheme/2 constraint and processing all "inference sites"
doesn't work for some situations, such as closure returning a closure with
untyped (var) parameter.

The new solution uses regular typeOf/2 constraint and calculates the
closure type assuming a variable as the return type. This must not be inferred from the context.

Avoid assigning a type to the closure the 2nd time, which
causes a cascade of typeOf/2 activations.
2022-11-23 14:03:19 +01:00
Fedor Isakov e5c56fbb40 Ensure nothing() is contained in any type 2022-11-23 14:03:18 +01:00
Fedor Isakov d2a68e8fc7 Apply migrations to mpscore sub-project 2022-11-23 14:03:18 +01:00
Fedor Isakov ad3ea9d63d Apply all migrations from 2022.2 2022-11-21 11:25:13 +01:00
Fedor Isakov d9cda646de Bump up plugin versions 2022-11-21 11:25:03 +01:00
Fedor Isakov 071efca420 Update build script 2022-11-21 10:50:00 +01:00
Fedor Isakov 847aa0d925 Update tests to ignore certain errors, avoid failure on correct code 2022-11-21 10:50:00 +01:00
Fedor Isakov fecabe840d Fix closure's parameter type inference, drop hacks
Replace the ad-hoc solution with typeScheme/2 cint to be used
on par with type/2. Type inference sites to be extended
with rules to process typeScheme.
2022-11-21 10:50:00 +01:00
Fedor Isakov b5de53e27f Fix type inference for untyped parameters; minor refactorings
Ensure nothing() type can be converted to any type.
Use the value "site" in capture() term to ensure capture types
don't get matched with `==`.
Also, avoid eagerly dropping resolveVar cint.
2022-11-21 10:50:00 +01:00
Fedor Isakov 876cf75302 Types for j.m.l.kotlinRefs languange 2022-11-21 10:50:00 +01:00
Fedor Isakov 83976afa9d Update and generate build script 2022-11-21 10:50:00 +01:00
Fedor Isakov d33e3148d9 Update virtual folders 2022-11-21 10:50:00 +01:00
Fedor Isakov 2a6d60133b Fix closure's parameter type inference; properly lift function type 2022-11-21 10:50:00 +01:00
Fedor Isakov 497691e9af Fix type inference of expressions in BL, plus few minor issues 2022-11-21 10:50:00 +01:00
Fedor Isakov f1efac2c11 Fix typechecking of function type: varargs and type inference 2022-11-21 10:50:00 +01:00
Fedor Isakov 22fb818142 Simplify typechecking of SNodeTypeCastExpression, drop deprecated stuff 2022-11-21 10:50:00 +01:00
Fedor Isakov 5abf1dbce7 Ensure types extend BL's Type term 2022-11-21 10:50:00 +01:00
Fedor Isakov 9b341c2e2d Ensure types extend BL's Type term 2022-11-21 10:50:00 +01:00
Fedor Isakov 3f722f6fbd Drop creating abstract concept for open type 2022-11-21 10:50:00 +01:00
Fedor Isakov 8c0771769a Update modules.xml for all recently added modules 2022-11-21 10:49:59 +01:00
Fedor Isakov 816dcc5f00 Types for j.m.l.methodReferences languange 2022-11-21 10:49:59 +01:00
Fedor Isakov 0e6a1103c7 Types for j.m.l.extension languange 2022-11-21 10:49:59 +01:00
Fedor Isakov ec0167feba Types for j.m.l.sharedConcepts languange 2022-11-21 10:49:59 +01:00
Fedor Isakov ff1d53a7ab Fix sequence type construction (passing correct unifier) 2022-11-21 10:49:59 +01:00
Fedor Isakov 0cdad6687c Introduce nothing() term, ensure it is assigned by default instead of type() 2022-09-08 14:07:06 +02:00
Fedor Isakov 8c9f3c8afa Fix closure type inference 2022-09-08 14:07:06 +02:00
Fedor Isakov 4aaf66d4cb Support for LocalPropertyReference 2022-09-08 14:07:06 +02:00
Fedor Isakov 35288dc3e5 Fix conversion in smodel lang 2022-09-08 14:07:06 +02:00
Fedor Isakov 7c3c6968b0 Fix type recovery in logic lang 2022-09-08 14:07:06 +02:00
Fedor Isakov 4070194d01 Bump up plugin versions 2022-09-02 16:11:00 +02:00
Fedor Isakov 83e273da73 Fix tests by caching Config instance
Tests are launched within a context that is unable
to perform normal MPS classloading, so we resort to
caching the (singleton) instance of Config coming from
an (IDEA) plugin to use it later.
2022-08-27 19:39:14 +02:00
Fedor Isakov 78f847747b Drop unstable hacks, simplify code 2022-08-26 13:58:22 +02:00
Fedor Isakov a40d74c600 Fix project build and loading scheme
Source files for ideaplugin are now compiled externally.
2022-08-26 10:39:20 +02:00
Fedor Isakov 299d9a4fd8 Update build scripts to fix tests launching 2022-08-25 12:59:36 +02:00
Fedor Isakov d2ca45aa02 Extract bootstrap code to idea plugin; CR options to become app-level
CR typechecking options are now application-level.

The solution j.m.c.ideaplugin contains the code responsible
for accessing and setting the options. This solution is loaded
as IDEA plugin on deploy and as regular module in source project.

Also merge code from two modules into j.m.c.typechecking.
2022-08-25 12:59:36 +02:00
Fedor Isakov c4a157bf4d Bump up plugin versions 2022-08-16 18:11:49 +02:00
Fedor Isakov 29c9a50fa9 Use built-in BL's intersection type instead of meet type 2022-08-16 18:11:49 +02:00
Fedor Isakov ab2a1b6499 BL Types: Disable overriding methods check, MPSCR-115
This check doesn't belong to the type system, is
currently implemented on top of it as a "check" rule.
2022-08-01 14:11:38 +02:00
Fedor Isakov ba7411abfa Bump up plugin version and rebuild build scripts 2022-07-28 10:37:36 +02:00
Fedor Isakov f985db8206 Update and rebuild build scripts 2022-07-28 10:30:38 +02:00
Fedor Isakov 7fe773dcc2 Switch all type aspects in mpscore sample to typechecking terms
This includes dropping of Recover rule table and relying on
the automatic types recovery.
2022-07-28 10:30:38 +02:00
Fedor Isakov 0663921ecd Refactoring in TypecheckingService; simplifying code
Request is no longer dependent on `TypecheckingService`.
Only single request can be processed at a time, which helps
prevent recursion.
All facade method in `TypecheckingService` now return instance
of `Response` instead.
2022-07-15 19:46:33 +02:00
Fedor Isakov 115135bbb5 Update plugin versions and manifests 2022-07-13 12:27:14 +02:00
Fedor Isakov 23502bafe7 Fix dangling import 2022-07-12 11:18:42 +02:00
Fedor Isakov 71d2014ef1 Update and rebuild build scripts 2022-07-07 12:56:30 +02:00
Fedor Isakov f24169ba26 Refactor Config to be immutable; allow multi-project MPSCR-105
Drop hacks that try to figure out the active project.
Instead introduce new ones that cache the instance of `ProjectRepository`
(unfortunately, there is no way around that now).
Stop accessing and modifying the singleton `Config` instance,
instead make an instance of `Config` a parameter to `TypecheckingService`.
2022-07-07 12:56:30 +02:00
Fedor Isakov 735bd29d61 Update references and rebuild build scripts 2022-07-07 12:56:28 +02:00
Fedor Isakov ea3e7c4719 Rebuild build scripts 2022-05-26 12:52:25 +02:00
Fedor Isakov ed58f59794 Ensure all memo usages have unique keys 2022-05-26 09:55:21 +02:00
Fedor Isakov cfcf6ecd81 Add dependency to j.m.build to enable plugin compatibility w/MPS 2022-05-11 11:37:20 +02:00
Fedor Isakov 85b0156c00 Remove erroneously added debug message 2022-04-27 11:42:02 +02:00
Fedor Isakov 9a312135cf Rebuild build scripts 2022-04-26 11:40:28 +02:00
Fedor Isakov bd249c5d0c Drop obsolete feature: incremental specification 2022-04-21 16:05:31 +02:00
Fedor Isakov dda4c9a7e6 Rebuild build projects 2022-03-16 12:32:42 +01:00
Fedor Isakov c7c55605f5 Add dependency to c.i.modules.platform to pluigns 2022-02-23 13:09:34 +01:00
Fedor Isakov a09dd24413 Fix plugin dependency to make compatible with MPS 2022-02-18 10:17:28 +01:00
Fedor Isakov 9cb04439eb Fix packaging of coderules and mpscore plugins
Fix the path mapping of lib files.
2022-02-17 16:44:14 +01:00
Fedor Isakov b2f97f25dd Update mpscore plugin version and dependencies 2022-02-16 12:33:33 +01:00
Fedor Isakov 04048470c5 Fix processing of recursive types
Avoid failing to process composite types because
of visiting the same classifier.
2022-02-10 23:40:20 +01:00
Fedor Isakov d7ffb963f7 Fix and rebuild build scripts 2022-02-08 10:44:48 +01:00
Fedor Isakov 041090d634 Fix module imports (new for 2021.3) 2022-02-08 10:44:48 +01:00
Fedor Isakov 0dcd48b42a Rebuild project 2022-02-08 10:25:28 +01:00
Fedor Isakov 475944192b Fix processing recursive types (BL) 2022-02-08 10:09:40 +01:00
Fedor Isakov f2fedb0cb1 Rebuild project 2021-12-28 13:12:45 +01:00
Fedor Isakov e98ae1a19d Update build scripts to load 3rd-party-rt.jar 2021-12-28 11:09:44 +01:00
Fedor Isakov 4c8ffc0544 Add j.m.bl.classifiers language to the build 2021-11-16 12:04:32 +01:00
Fedor Isakov 6a834600c1 Add null guard NodeBuilder rule 2021-11-15 13:00:03 +01:00
Fedor Isakov 8e672897c5 Drop support for TypeHintExpression 2021-11-10 16:36:49 +01:00
Fedor Isakov 52e6eaf65d Rebuild project 2021-10-27 12:03:49 +02:00
Fedor Isakov 509944c138 Fix typechecking of anonymous class with default ctor 2021-10-27 12:03:49 +02:00
Fedor Isakov fedd56dd55 Extract correct classifier from anonymous class 2021-10-26 17:46:40 +02:00
Fedor Isakov 1ed5fa4e4b Update build project 2021-09-22 17:08:25 +02:00
Fedor Isakov ec6e56c1c3 Fix expandMacro calls to explicitly pass 'subs' parameter recursively
The hack on which expandMacro parameters used to rely on, resulted in a side-
effect, namely that once passed expandMacro parameter is available
recursively, until overridden.
With new contract all parameters need to be passed on when an expandMacro
is called recursively.
2021-09-21 17:54:51 +02:00
Fedor Isakov 210f30be1b Prefer node builder to quotation 2021-09-21 17:54:50 +02:00
Fedor Isakov a5105e666a Update build scripts 2021-09-21 17:54:50 +02:00
Fedor Isakov f96211273c Drop hack for finding refs in LateParameter, switch to internal var ref 2021-08-17 09:30:49 +02:00
Fedor Isakov d941435963 Restore language module smodel.queryExt in the project 2021-08-17 09:30:48 +02:00
Fedor Isakov 6b0526ba31 Introduce language j.m.l.types to contain aspect-related generator mappings 2021-08-17 09:29:21 +02:00
Fedor Isakov 74ceb5cbfb Types aspect for j.m.lang.typechecking (in Ext language) 2021-08-04 13:24:59 +02:00
Fedor Isakov b1fbf7265e Update plugin version and platform compatibility 2021-07-29 15:17:18 +02:00
Fedor Isakov 1b44d634b8 Rgenerate build scripts with MPS 2021.2 EAP 2021-07-29 14:46:40 +02:00
Fedor Isakov c4db4fcafe Set generator options: strict=false in build scripts 2021-07-29 14:18:29 +02:00
Fedor Isakov 78c9b16f13 Auto-fix: change reference to default constructor 2021-07-22 15:46:21 +02:00
Fedor Isakov 73d50ef39c Add typing rules for string operations in BL 2021-07-22 13:59:19 +02:00
Fedor Isakov 7e132a8604 Drop creating blockmap file 2021-07-22 13:59:19 +02:00
Fedor Isakov d1f7932aae Generate blockmap and hash for plugin update site 2021-06-29 18:10:21 +02:00
Fedor Isakov bad065229f Rebuild project 2021-06-29 18:10:21 +02:00
Fedor Isakov 17e1bc4589 Applied migration 2021-06-29 14:51:10 +02:00
Fedor Isakov 9ea7ae2067 Better naming scheme for downloadable artefacts 2021-06-21 18:35:48 +02:00
Fedor Isakov 9826290f78 Fix building and packaging the plugins 2021-06-21 17:50:00 +02:00
Fedor Isakov 0b26d6cf7c Package mpscore languages into a separate plugin 2021-06-18 18:41:01 +02:00
Fedor Isakov 9527a097b8 Migrate to the latest MPS release, apply migrations 2021-06-18 18:41:01 +02:00
Fedor Isakov bcb4ea2499 Temporarily disable tricky to solve test case (nested generics) 2021-05-18 13:07:14 +02:00
Fedor Isakov 054ecf5c25 Adjust error annotations to reflect proper typechecking errors 2021-05-18 13:07:03 +02:00
Fedor Isakov 1e3c67949d Fix BL types: conditional op, raw types, capture conversion 2021-05-18 13:07:03 +02:00
Fedor Isakov 632d33ed0f Ensure the sample project is open with coderules plugin 2021-05-18 12:32: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 f434d34d95 Test integrating stream API and smodel 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 d9225a4516 Test code for smodel/stream sample 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 81d025298c Update build script and rebuild 2021-05-04 11:07:14 +02:00
Fedor Isakov 5e4dfb249e Add tests for type variables inference 2021-05-03 13:29:13 +02:00
Fedor Isakov 0194dcdfcc Fix closure test failing after recent changes 2021-05-03 13:14:11 +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