Commit Graph

247 Commits

Author SHA1 Message Date
Fedor Isakov 2b123d9f42 Apply rule templates from all stages in one pass.
A heuristic to collect nodes required for local typechecking.
Minor changes in typesystem2 runtime.
2017-09-14 18:54:19 +02:00
Fedor Isakov bad0e86d85 Test recursive type. 2017-09-13 16:41:56 +02:00
Fedor Isakov 4c8952a09a Typechecking templates: protect from NPE; guard aganst infinite recursion while constructing terms for recursive type; more primitive subtyping cases. 2017-09-13 16:41:47 +02:00
Fedor Isakov 0ef1798c1a Fix infinite cycle in Snapshot. Include the exception that caused failure while evaluating rules. 2017-09-13 16:05:07 +02:00
Fedor Isakov f8c265dcc7 Use PooledThreadExecutor for background scheduling. Ad-hoc support for handling fatal errors during execution, such as StackOverflowError. 2017-09-12 17:11:43 +02:00
Fedor Isakov b33aa6fd76 Introduce module for type models managed by the types cache. 2017-09-12 13:01:36 +02:00
Fedor Isakov 490abaad0f Typechecking plugin: ensure the highlighting is part of the reactive scheme. Expose errors during highlighting to the user. 2017-09-11 13:17:34 +02:00
Fedor Isakov 1c2bfc7346 Typechecking templates: add missing support for primitive types; protect rule applications from running into a cycle on recursive types; git rid of cycles in the typechecking. 2017-08-23 14:33:30 +02:00
Fedor Isakov e9c8897bfa Refactor out common typechecking actions. An action to mark a single node's type. 2017-08-23 14:33:25 +02:00
Fedor Isakov 59798eba71 Typechecking templates: switch to map instead of "logical substitution" type. 2017-08-22 11:47:35 +02:00
Fedor Isakov cf3832ef5a Typechecking templates: extract substitution context parameter. Provisional collecting of dependencies for "local typechecking". 2017-08-22 11:47:35 +02:00
Fedor Isakov 6c56623987 Minor refactoring in CHR program producing code: avoid passing stage as a parameter. 2017-08-22 11:47:35 +02:00
Fedor Isakov 5c442c47b6 Support for launching typechecking on a bunch of nodes without going deep. Implies automatic collection of typechecking dependencies. 2017-08-22 11:47:34 +02:00
Fedor Isakov 78c7f71e9a Refactoring the code that launches typechecking to better separate concerns.
Extract TypeAspectRuntime.
Support building typechecking program for sequence of nodes.
Moving classes/models around to get rid of cyclic deps.
2017-08-16 15:29:23 +02:00
Fedor Isakov 9a9dc9bd08 Refactoring rule application API and generator: consolidate all logic into token, make token a private API, switch to prototype extension of rule templates. Cleaning up the generator. 2017-08-14 13:33:50 +02:00
Fedor Isakov 9e5eb91089 Minor refactoring of rules application logic: extract specific subclasses of NodeWalker for different kinds of walks. 2017-08-08 11:56:19 +02:00
Fedor Isakov 4dd344e533 Fix mark types with trace. 2017-07-31 20:09:22 +02:00
Fedor Isakov d66b9db100 Use concurrent map for cache holder. 2017-07-31 17:41:35 +02:00
Fedor Isakov 8ecdb38df2 Typechecking schedulers. Using trampoline scheduler when typechecking facade is called from a command. Test type cache update. 2017-07-31 15:47:17 +02:00
Fedor Isakov 60ef0acb6a Remove dependency on guava. 2017-07-28 20:33:10 +02:00
Fedor Isakov 5c4fb50a63 Reorganize and repackage the code to better reflect purpose of the modules. 2017-07-28 19:13:48 +02:00
Fedor Isakov eace5181df Streamlining the internal typechecking API: remove dependencies on unused classes. Reimplement TypecheckingFacade using the unified API. 2017-07-28 18:55:42 +02:00
Fedor Isakov aac95b2b25 Move typesystem2.helper.plugin to typechecking.plugin. Drop typesystem2.helper solution. 2017-07-28 13:58:37 +02:00
Fedor Isakov 804cc9140b Refactoring typechecking API: extract cache component to the plugin, change the cache updater contract to factory, simplify TestLaunchTypechecking. 2017-07-28 13:51:15 +02:00
Fedor Isakov 9e74520810 Refactor TypecheckingHelper to re-throw the exception that was wrapped in ResumeNextStepException at the end. Allow to resume only once.
Refactor LaunchTypechecking.checkTypes() to throw exception on failure.
2017-07-27 15:18:26 +02:00
Fedor Isakov 757d869cf3 Rewrite tests without using NodeTestCase's header. Update TypeNodeManager and Typechecker to both be initialized async, add a dispose call for Typechecker. 2017-07-27 15:18:20 +02:00
Fedor Isakov f2710aa8d6 Fix the trace displaying only the first stage. Simplify types in TypecheckingHelper. Refactor LaunchTypechecking to use CollectTypesStep. 2017-07-27 15:17:20 +02:00
Fedor Isakov b9e44ef2eb Typechecking templates: add a recover rule for variable declaration 2017-07-26 16:15:27 +02:00
Fedor Isakov 2908543afe Refactoring typechecking steps to extract the core part. Get rid of the persistency-dependent model, use a bare EditableSModelBase for types. 2017-07-25 13:55:55 +02:00
Fedor Isakov e970b2443a Extract typechecking-related stuff to a separate solution 'j.m.typechecking' 2017-07-25 10:30:29 +02:00
Fedor Isakov 4665aa5623 Rename 'j.m.typechecking' solution to 'j.m.typechecking.ui'. Contains only the plugin model. 2017-07-24 11:29:59 +02:00
Fedor Isakov 499b02e56e Fix NPE in TreeTableTree.setVisibleRow(). The tree object may have been replaced by setModel(). 2017-07-21 16:57:13 +02:00
Fedor Isakov c232ba7d57 Fix the "read outside read action" issue in the cell renderer. 2017-07-21 15:40:01 +02:00
Fedor Isakov ba5def2285 Another refactoring in TypecheckingHelper: extract all steps to standalone classes, cleanup the API. 2017-07-20 19:15:46 +02:00
Fedor Isakov 9bd7b5fe08 Refactoring TypecheckingHelper to get rid of the homegrown scheduling and reporting. 2017-07-20 15:19:21 +02:00
Fedor Isakov 20622554f2 Switch to MPS 172 latest RC build. Fix a couple of parent-invariant violations in the type system, remove obsolete intention. 2017-07-19 16:22:59 +02:00
Fedor Isakov 998aa96d6b Fix test launching after switching to rxJava. Need to hack ModelAccess in order to work around the mandatory write action in NodeTestCase. 2017-07-19 12:00:06 +02:00
Fedor Isakov be66ee5bce Automatically updated module descriptors. 2017-07-18 11:46:27 +02:00
Fedor Isakov f4ff350bc5 Set "reexport" flag to true to avoid warning. 2017-07-18 11:27:32 +02:00
Fedor Isakov bebb503874 Switch to using rxJava for launching type checking, avoid blocking EDT. Minor optimization of the trace. 2017-07-18 11:27:12 +02:00
Fedor Isakov c8b4fff148 Add dependencies on RxJava and rxjava2-swing. 2017-07-18 11:24:38 +02:00
Fedor Isakov ab408b0c09 Add explicit mapping of library jar locations to reactor module. Fix the plugin. 2017-06-13 20:31:40 +02:00
Fedor Isakov dab37c39b1 Update the plugin metadata. 2017-06-13 10:17:38 +02:00
Fedor Isakov 0fd6f65591 Rename "sampleplugin" solution to "typechecking". Move build solution to typechecking folder. Rename the plugin to "typechecking". 2017-06-12 21:55:53 +02:00
Fedor Isakov 33bc06e9cc Rename solutions "typesystem2.sample.*" to "typechecking.sample.*". 2017-06-12 19:10:29 +02:00
Fedor Isakov 0a615c8490 Rename solution "typesystem2.test" to "typechecking.test". 2017-06-12 19:01:49 +02:00
Fedor Isakov 51263e9b8b Reorganizing the code, optimize the number of solutions. Delete empty solutions. 2017-06-12 18:55:55 +02:00
Fedor Isakov 663c58d880 Delete empty generators. Fix the import errors. 2017-06-12 16:45:00 +02:00
Fedor Isakov ee0b98f9db Rename "sampleLang" to "baseLanguageExt" 2017-06-12 16:32:49 +02:00
Fedor Isakov 4ec306e9c3 Delete the solution with obsolete build scripts. 2017-06-12 15:37:20 +02:00