Commit Graph

306 Commits

Author SHA1 Message Date
Fedor Isakov 52bca36d32 Rebuild project. 2020-04-13 17:58:33 +02:00
Fedor Isakov 6a431fcb49 Rebuild project. 2020-03-31 18:44:07 +02:00
Fedor Isakov 538632a8a3 Migrate lambdacalc sample to new expand/call macros. 2020-03-31 11:43:30 +02:00
Grigorii Kirgizov 6a53d15a21 Refactor: move logic related to tracking parent match from ControllerImpl to MatchJournal
Relates to machinery introduced in MPSCR-47.
Previously parent match was maintained in Controller on Java call stack.
Now this stack of parent matches is maintained manually in MatchJournal.

So MatchJournal gains new invariant: parentChunk()
returns correct parent after each logMatch() call.
Several tests fail, also need to maintain this
invariant after logActivation() calls.
2020-03-26 13:40:41 +03:00
Grigorii Kirgizov b6aaec8870 Revert temporary workaround for MPSCR-51 from 16e39a93 2020-03-23 14:39:54 +03:00
Grigorii Kirgizov 16e39a9345 Check applicable scope for certain checking rules in BL (workaround for BL for MPSCR-51). Fix SubclassingUtil.
Modified TYPECHECK query to include "checkingScope" query parameter:
it is a root node for which program is generated (for local typechecking it's local node).
Rules additionally match on a constraint `checkDecls(node<>)` bearing this node,
so while rules will be generated for all scopes, only those in applicable scopes will run.

Also split rule for EnumConstantDeclaration on declration checking and just typing rule.
2020-03-17 17:54:38 +03:00
Fedor Isakov f2bb87e1b0 Apply migration to replace deprecated concept. 2020-02-26 15:03:31 +01:00
Fedor Isakov 7ba7c983cb Apply migration to use logical variable ref expression. 2020-02-24 22:57:05 +01:00
Fedor Isakov e1c5f68e3e Typechecking templates: minor refactoring, optimizing code.
Replace node-ptr<> type with node<> where applicable.
Use node<> type is ok in constraint arguments.
Replace instances of LateExpressionItem $() with ExpressionItem.
2020-02-20 14:52:28 +01:00
Fedor Isakov 2c43762f93 Replace all instances of .pointer in constraints to node reference.
SNode is supported now directly as an argument to constraint/predicate.
Pointer operation is no longer necessary, as is node-ptr<> type for logical vars.
2020-02-20 11:59:28 +01:00
Fedor Isakov 796ad9ad2c Apply migration to drop ValueOfExpression. 2020-02-12 12:26:09 +01:00
Fedor Isakov 1a6b107a76 Apply migration to replace condition block with if statement. 2020-02-07 13:14:46 +01:00
Fedor Isakov 4a84ebce5f Apply migration to switch to BodyBlock. 2020-02-06 12:55:32 +01:00
Fedor Isakov c353f89ea0 Apply migration to drop ParameterContainer. 2020-02-05 17:02:32 +01:00
Fedor Isakov 3f51c1e5c1 Apply migration that replaces empty logical type with term type. 2020-02-05 12:34:20 +01:00
Fedor Isakov 391c9053b5 Apply migrations after switch to MPS 193. Regenerate project. 2020-02-03 11:24:22 +01:00
Fedor Isakov c384785b12 Apply automatic migration. 2020-01-20 16:54:38 +01:00
Fedor Isakov b182cf60d7 Revert "Temporarily ignore failing tests."
This reverts commit 7776f97fe7.
2019-11-26 23:09:40 +01:00
Fedor Isakov 85674ef077 Add explicit "test" facets to test solutions. 2019-11-24 17:58:15 +01:00
Fedor Isakov 7776f97fe7 Temporarily ignore failing tests.
The tests presumably fail because of a broken contract that is used
in the typesystem implementation, namey that a logical variable
contained by an constraint argument-term (as opposed to being an
argument itself) reactivates the constraint on ground/parent change
event. This assumption is false, thereby the implementation needs
to be adjusted keep compatibility with the contract.
2019-11-24 13:34:59 +01:00
Fedor Isakov 69bc34e8f9 Drop language j.m.l.smodel.types containing SNodeTypeOp that is no longer used. 2019-11-11 14:37:41 +01:00
Fedor Isakov ecd2594fed Drop deprecated Reporting interface and all its usages.
Remove runtime solution that contained only Reporting.
2019-11-11 13:53:41 +01:00
Fedor Isakov 96f45c6e37 Drop commented out code. 2019-11-11 12:20:12 +01:00
Fedor Isakov 3f1b65ada2 Fix the structural errors introduced by a badly run migration. 2019-11-06 12:05:18 +01:00
Fedor Isakov ad90a4cb77 Apply migration that replaces all instances of NodeAnchor with .pointer op. 2019-11-06 11:21:57 +01:00
Fedor Isakov daa1bdceb6 Update default jvm options for running tests to "-Xmx2048m". 2019-11-05 20:53:01 +01:00
Fedor Isakov 3092fa3635 Fix all templates with broken scopes for logical variables. 2019-10-25 22:45:55 +02:00
Fedor Isakov f8dcf127db Extend typechecking query TYPECHECK with a parameter to report types.
Reporting of calculated types is to be more explicit.
The not-so-obvious _type_.set() operation is to be phased out.
2019-10-10 17:30:11 +02:00
Fedor Isakov 49518e0704 Switch to reactor version 0.9.14. 2019-09-30 16:44:36 +02:00
Grigorii Kirgizov cdfe1f2c0c Update language version after migrations from mps.logic lang 2019-09-11 13:24:02 +03:00
Grigorii Kirgizov 9a782fc619 Run 'list literal -> cons list constructor' migration on samples 2019-09-11 13:24:02 +03:00
Grigorii Kirgizov 39fa007310 Run Splice migration on samples 2019-09-11 13:24:02 +03:00
Grigorii Kirgizov 618524bdff Fix Forall term in lambdacalc with recent changes 2019-09-11 13:24:01 +03:00
Fedor Isakov 5b5798dcad Switch to reactor lib 0.9.13. 2019-09-10 18:37:11 +02:00
Fedor Isakov 5eed118be0 Replace usages of deprecated reporting with error constraint.
Having to specify the target for reported messages is a redundancy.
It's better to rely on the built-in feedback mechanism and handle the
messages at the supervisor level.
2019-09-02 17:55:46 +02:00
Fedor Isakov 0db213725e fixup! Swith to using reactor lib 0.9.12. 2019-09-02 17:55:46 +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 973b9c35d5 Rebuild project. 2019-08-14 13:29:22 +02:00
Fedor Isakov 2ef8adfe5e Switch to reactor 0.9.11 2019-07-30 13:48:08 +02:00
Fedor Isakov 6384085b17 Rebuild project. 2019-07-30 12:24:25 +02:00
Fedor Isakov 3a48c47880 Migration: "update versions in descriptors". 2019-07-30 11:49:26 +02:00
Fedor Isakov 66c9222a95 Run migrations with MPS 2019.2 EAP3. 2019-07-26 17:27:18 +02:00
Fedor Isakov 4e4e1f68ef Fix buildscript dependencies. 2019-07-26 17:14:48 +02:00
Fedor Isakov 79b08c6f83 Revert "Apply migrations from EAP3 and rebuild project."
This reverts commit 9c5bf858c3.
2019-07-26 15:30:30 +02:00
Fedor Isakov 9c5bf858c3 Apply migrations from EAP3 and rebuild project. 2019-07-19 12:28:27 +02:00
Fedor Isakov a0b5acaa62 Rebuild project. 2019-06-07 09:16:21 +02:00
Fedor Isakov 947f9523bd Fix language imports. 2019-06-07 09:16:21 +02:00
Fedor Isakov cd37daaa07 Apply migrations after switching to the latest EAP build of MPS. 2019-06-07 09:16:21 +02:00
Fedor Isakov 17ed4642ae Apply all available automatic migrations. 2019-06-05 16:16:00 +02:00
Fedor Isakov 57de11c3fe Rename all modules/models having prefix j.m.typechecking to j.m.coderules.typechecking. The former is reserved. 2019-06-05 16:15:59 +02:00
Fedor Isakov fe505792c6 A bunch of refactorings and renames in typechecking plugin.
Remove unused interfaces, merge classes with similar functionality, reduce the number of used classes.
2019-06-05 16:14:27 +02:00
Fedor Isakov d0ffcb66ef Regenerated project. 2019-06-05 16:14:27 +02:00
Fedor Isakov 3e1c9d6e89 Rebuild project. 2019-06-04 18:59:53 +02:00
Fedor Isakov bd1c56d9d0 Rename concept Handler -> RulesList 2019-05-09 17:30:14 +02:00
Fedor Isakov ed6f7a07c2 Remove instances of obsolete concept containingLink, replace with link. 2019-04-24 22:14:24 +02:00
Fedor Isakov 99ea2a7b71 Switch to the latest revision of reactor lib (0.9.9). 2019-04-24 21:21:03 +02:00
Fedor Isakov 55940d2e16 Remove Kotlin libs from reactor module and from distrib. Rebuild project.
Kotlin runtime is available from the platform.
2019-04-11 11:10:00 +02:00
Fedor Isakov ab006cc8d9 Fix missing dependency. 2019-04-10 09:45:47 +02:00
Fedor Isakov ca0524599d Switch to latest 2019.1 EAP and rebuild. 2019-04-09 16:51:31 +02:00
Fedor Isakov 396b1fdad3 Move all classes from j.m.typechecking to j.m.typechecking.service. This package name is reserved. 2019-03-22 11:40:32 +01:00
Fedor Isakov f6374635bb Rebuild project. 2019-03-22 11:10:08 +01:00
Fedor Isakov 671194c9c3 Switch to the latest EAP of MPS 2019.1. Re-save all models. 2019-03-22 11:09:39 +01:00
Fedor Isakov 255b7061f7 Reorganize models/packages, restructure code components responsible for program building/evaluation. 2019-02-15 17:15:17 +01:00
Fedor Isakov 83e5ce8c26 Switch to the latest conreactor version. 2019-02-15 17:15:16 +01:00
grigorii.kirgizov e87c9654c1 lc: minor: Fix missed condition in guard on merging type constraints rule. Could have possibly led to bug in somewhere. 2019-02-06 16:00:31 +03:00
Fedor Isakov 0fcff76308 Re-save all models updated resolve info. 2019-02-06 13:22:32 +01:00
Fedor Isakov b42d7553c8 Temporarily comment out an instance of let clause that produces different result in local inference. 2019-02-06 12:59:38 +01:00
Fedor Isakov aa1a29a318 Make all tests in lambdacalc subproject pass including local inference. 2019-02-06 12:58:46 +01:00
grigorii.kirgizov 0cd29c5729 lc: Add type inference dependencies ('require' things) to output the same types for local type inf. Some renames.
Types from local & non-local type inf differ in 2 cases:
- different type variables names
- non-local typecheck fails, but some types still get to output
2019-02-05 13:03:51 +03:00
Fedor Isakov fd94f0a249 Straghten up build tasks: assemble to be the default task. Remove superfluous configure_gradle script, use -P switches instead. 2019-02-04 11:32:13 +01:00
Fedor Isakov 0fb0771ad7 Ensure parent of varRef is included into typechecking. This fixes some locally inferred types mismatch. 2019-02-02 16:11:38 +01:00
Fedor Isakov 6e85a2c4fa Use custom matching strategy in lambdacalc tests. 2019-02-02 16:10:35 +01:00
Fedor Isakov ebada478c6 Replace error annotation with suppress error annotation to indicate an expected constraint violation. 2019-02-01 14:17:57 +01:00
Fedor Isakov e0b856634c Add java plugin to all gradle scripts. 2019-02-01 14:15:57 +01:00
Fedor Isakov 38777cda51 Ensure failed test means failed build for all sample projects. 2019-02-01 14:15:04 +01:00
Fedor Isakov ebd4f82514 Specify the value for ${project_home} macrii in sample subprojects. Fix tests being ignored in CI. 2019-02-01 12:08:29 +01:00
Fedor Isakov 080bb0a448 Fix gradle scripts to get rid of deprecated stuff. Default task to build everything without testing. Update INSTALL.txt. 2019-02-01 00:40:59 +01:00
Fedor Isakov 81ee94c342 Fix gradle scripts to ensure model checker is run after everything else has heen built. 2019-01-31 17:39:39 +01:00
Fedor Isakov a40e50bc53 Temprorarily suppress errors in two locations due to constraints violation (to be fixed). 2019-01-31 12:05:35 +01:00
Fedor Isakov 767444a5c0 Make LetClause able to suppress errors in its children. 2019-01-31 12:05:35 +01:00
Fedor Isakov 012b8963cb Fix errors found by model checker in lambdacalc sample. 2019-01-31 12:05:21 +01:00
grigorii.kirgizov 8d7bdcf173 lc: minor: Remove unneeded checkConstraints in subsumption
This case is anyhow handled by typeConstraints_discharge rule, when subsumes_leaves fires up,
even before those removed checks repeat this work.
2019-01-28 17:02:55 +03:00
grigorii.kirgizov 172f74b6f8 lc: minor: Add some comments. Some cleanup. 2019-01-28 16:59:05 +03:00
grigorii.kirgizov a2012219b7 lc: Fix spurious typeConstraints reactivation on forall gen. Fix recursive case in instanceCheck.
As a consequence, there's a simplification of produceTypeConstraints rules.
Also add comments and fix some test cases: some of them are actually typeable.
Now tests are correct (checked against Haskell's typechecker) and all pass.
2019-01-28 13:32:32 +03:00
grigorii.kirgizov 0a5a7ec3c6 lc: minor: in 'typeclasses' restructure rule for Typeclass, add few comments, add Doc for failing type output (TypeclassesTest) 2019-01-28 11:38:33 +03:00
grigorii.kirgizov 41e8d3d96e lc: Fix forgotten typeOf rule for 'fix' operator. Add typeclasses tests to test suite. 2019-01-28 11:38:33 +03:00
grigorii.kirgizov 2a44bb0ef0 lc: Fix absence of type output in some cases -- match in `produceTypeConstraints` rule in a different way 2019-01-28 11:38:33 +03:00
grigorii.kirgizov d364dc24e4 lc: add type output (with a workaround) for Constraints in 'recover'
Workaround: ConstraintRepr SNode is added specifically for outputting types.
2019-01-28 11:38:33 +03:00
grigorii.kirgizov 4044b7f5e8 lc: Split typeConstraints constraint to two, according to its 2 types of usages: as typevar def and as actual Constraints 2019-01-28 11:38:33 +03:00
grigorii.kirgizov ecc6c4aed2 lc: Add Constraint check for unified terms. Few fixes for typeclasses. Add typecheck deps for typeclasses. Some tests.
Some Constraints checks are not covered by 'subsumed', so, need top rule for discharging those.
Fix Constraint set production in 'types', use new set for each type var. Fix 'instance' constraint.
2019-01-28 11:38:33 +03:00
grigorii.kirgizov 20c9e0aae8 lc: add initial version of Constraints check rules, part of subsumption. Add partial recover rules. Other minor changes.
Also a fix to typeOf_PrototypeImpl rule, and a fix to instTypeVars: needed to copy Constraint sets.
2019-01-28 11:38:33 +03:00
Fedor Isakov 37b6afa642 Enable back working tests in lambdacalc 2019-01-26 14:15:30 +01:00
Fedor Isakov f3c2f53fa6 Temporarily disable failing tests in lambdacalc sample 2019-01-25 15:02:26 +01:00
grigorii.kirgizov 5d5a102661 lc: minor: move Cons-list utils to its own handler 2019-01-16 18:19:11 +03:00
grigorii.kirgizov 87cdde5309 lc: 2 fixes for previous commit: walkaround in rules with 'deep' pattern-matching in heads; produce empty typeConstraints on user annos (in types) 2019-01-16 18:16:11 +03:00
grigorii.kirgizov 06623693bf lc: add rules for Proto & ProtoImpl; modify inst and gen for Constraints in forall; move typeConstraints rule
Rule for PrototypeImpl is the heaviest.
Also, it seems that constraint field in Forall DataForm isn't needed.
2019-01-16 17:48:34 +03:00
grigorii.kirgizov bd8e0ab00c lc: add handling of Typeclass and Instance clauses, add macro for Constraint collection, add Set for this 2019-01-16 13:27:56 +03:00
grigorii.kirgizov b0e5edb03a lc: remove getType rule and translate type annotations to dataforms in macro; also minor changes 2019-01-16 11:48:09 +03:00
grigorii.kirgizov 94659549bc lc: fix failing test: fix usages of eq rule in subsumption 2019-01-16 11:14:41 +03:00
Fedor Isakov 7f7f290b01 Temporarily comment out two instances of let clause that produced errors in tests 2019-01-13 17:53:06 +01:00
Fedor Isakov dce532c5c7 Apply automatic migrations in lambdalc project 2019-01-13 17:53:01 +01:00
grigorii.kirgizov ce34b598c2 lc: minor: add simple Typeclass examples (it's only structure/editor/scopes example); add one test case to DemoScopes 2019-01-11 19:09:44 +03:00
grigorii.kirgizov c8233c24d7 lc: move to fully nameless representation of type vars; assign names only in recover
It is also a necessary step to bidirectional typechecking and can simplify things in other places
2019-01-11 19:09:44 +03:00
grigorii.kirgizov eb80329a54 lc: change recover_varRef rule, propagate to recover_Var rule instead of duplicating it 2019-01-11 19:09:44 +03:00
grigorii.kirgizov fb4fe40973 lc: typeclasses: added structure, editor, constraints (mainly concerned with scoping) aspects 2019-01-11 19:09:44 +03:00
grigorii.kirgizov cf855fc19b lc: add test case for correct handling of instantiation scopes in forall. fails now. 2019-01-11 19:09:44 +03:00
grigorii.kirgizov 2cc804079a lc: add test case in DemoScopes for isomorphism between similar forall type
It checks that subsumtion relation is actually a richer 'dsk' relation
from Peyton Jones et al. 2007
2019-01-11 19:09:44 +03:00
grigorii.kirgizov 61e282da6c lc: minor: remove few commented lines, add few comments; add space between typevars in ForallType editor 2019-01-11 19:09:44 +03:00
Fedor Isakov 134fbb5cdb Add missing dependency to lambdacalc test model 2019-01-09 14:48:21 +01:00
grigorii.kirgizov 4eab15c0a3 lc: add DemoScopes test case, fix one test example; reverse displayed order of user-supplied type annotations 2019-01-09 12:49:34 +03:00
grigorii.kirgizov 583358dc25 lc: modify name assignment to variables in 'forall' 2019-01-09 11:54:27 +03:00
grigorii.kirgizov 9180f16c25 lc: minor: uncomment typeOf_AnnVarRef rule (not fully tested yet), add dummy test rule 2019-01-09 11:18:20 +03:00
grigorii.kirgizov 8da1f51434 lc: move some examples, add error annotations in DemoScopes and test case for annotations 2019-01-09 11:18:20 +03:00
grigorii.kirgizov 1de24dd83c lc: minor: editor enhancements 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 47130f794d lc: add proper type var scopes for AnnExpr 2019-01-09 11:17:42 +03:00
grigorii.kirgizov b727b375ba lc: disallow nested annotations on variables definitions 2019-01-09 11:17:42 +03:00
grigorii.kirgizov c407e29ec4 lc: some refactorings nothing special 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 682ed5b90b lc: refine subsumption rel; add examples in DemoScope; editor enhancements (amend commit) 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 24ce9e73aa lc: refine subsumption rel; add examples in DemoScope; editor enhancements 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 7f02d10b62 Add expr annotations; add examples 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 440fcf868a Intermediate commit: add VarType DF with editor; partial work on subsumed relation 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 2fa00cac72 Minor: move annotation rules to its own handler 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 06baa99da8 Add Var term; use it instead of free var-s in forall for subst.
Still not finished: can't pass Var name (see forall, freeTypeVars_isFree).
Also add subsumption relation for annotations.
2019-01-09 11:17:42 +03:00
grigorii.kirgizov 58a518af4f Partially working forall quantified types
Substitution (i.e. forall instantiation) doesn't work in this version.
2019-01-09 11:17:42 +03:00
grigorii.kirgizov 084c4581f0 Bounded type vars: add free type var collection (in typeOf), gen, inst, list utils 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 1be19ffe1e lc: add pair (without accessors) and its typing to lambda calculus (lc) 2019-01-09 11:17:42 +03:00
grigorii.kirgizov 4ed48e2560 add unquantified type annotations to lambda calculus 2019-01-09 11:17:42 +03:00
Fedor Isakov cc4b335286 Introduce checking for instances of RuntimeErrorType during tests. Refactor test typechecking launcher. 2019-01-04 17:47:44 +01:00
Fedor Isakov b4693aac3c Switch to the new conreactor version. 2018-12-28 11:57:27 +01:00
grigorii.kirgizov 54af10dad0 add unquantified type annotations to lambda calculus 2018-12-05 16:38:32 +01:00
Fedor Isakov debaa390e2 Tests of BL typechecking features. Primitive types. 2018-12-03 16:59:16 +01:00
Fedor Isakov 2205639acf Add tests to build script for lambdacalc 2018-11-29 13:23:48 +01:00
Fedor Isakov a1bd3024a5 Tests for lambdacalc sample. Annotate places where errors are expected. 2018-11-29 12:51:33 +01:00
Fedor Isakov 39f7ff6838 Ensure local type inference works in lambdacalc sample. Ensure type variable numbers are unique withing top Clause instance. 2018-11-29 12:16:38 +01:00
Fedor Isakov f0bb068750 Fix instances of removed concepts and broken API calls after migration to 2018.3. Rebuild project. 2018-11-28 16:48:59 +01:00
Fedor Isakov 19ce84f7ef Switch to 2018.3 RC. Apply all migrations. 2018-11-28 16:48:59 +01:00
Fedor Isakov 06f95c5870 Update build solution to reflect latest changes. 2018-11-04 13:10:40 +01:00
Fedor Isakov 0819ef0a40 Add a reference to the article on typechecking STLC to readme 2018-08-19 17:32:59 +02:00
Fedor Isakov 8cacd9c326 Ensure terms are copied "properly" without breaking Path's contract. Pending optimization. 2018-08-07 11:50:05 +02:00
Fedor Isakov 98dfe30756 Resaved all models 2018-08-03 11:48:36 +02:00
Fedor Isakov d26805db7d Switch to the latest version of reactor lib 0.9.1 2018-08-03 11:48:36 +02:00
Fedor Isakov e2a68b4012 Fixes necessary for compatibility with MPS 2018.2 2018-07-22 16:51:10 +02:00
Fedor Isakov a240f129c2 Name solutions and models consistently in samples (lambdacalc) 2018-07-22 11:26:12 +02:00
Fedor Isakov 0bacffb611 Move type setting operation to typechecking lang. 2018-07-22 11:09:49 +02:00
Fedor Isakov 689ae4776c Give more sensible name to a sample demo solution and model. 2018-07-21 13:49:21 +02:00
Fedor Isakov c7cc97fffb Rename reporting runtim solution. 2018-07-21 13:29:40 +02:00
Fedor Isakov ea9919f38a Bring the hierarchy of DataForm concepts in line with the runtime.
Merge DataForm constructors into logic language.
Repackaging logic runtime.
Drop obsolete code.
2018-07-21 13:29:22 +02:00
Fedor Isakov 814baf4bce Update readme files. 2018-07-19 15:12:34 +02:00
Fedor Isakov e29a0576e2 Rename the root project and artifacts to "coderules". 2018-07-18 15:54:52 +02:00
Fedor Isakov 0d4d61d5f9 Change the sample project name to lambdacalc. 2018-07-18 15:54:50 +02:00