1
1
mirror of https://github.com/github/semantic.git synced 2024-12-29 01:42:43 +03:00
Commit Graph

1362 Commits

Author SHA1 Message Date
Rob Rix
f41a1e9f51 Define an analysis to just graph packages. 2018-05-22 13:54:11 -04:00
Rob Rix
51bdfc2c84 Eavesdrop on loads. 2018-05-22 13:52:13 -04:00
Rob Rix
26e83423e0 We don’t define any undecidable instances any more. 2018-05-22 13:47:11 -04:00
Rob Rix
a2bea05066 Construct package vertices in the helper. 2018-05-22 13:45:30 -04:00
Rob Rix
43a0956629 Don’t export packageGraph. 2018-05-22 13:44:36 -04:00
Rob Rix
69dbfda246 Use a single entry point to construct module vertices. 2018-05-22 13:44:01 -04:00
Rob Rix
6d99476997 Revert "Provide a state effect for the previous module."
This reverts commit b6a3904a8d15728c4b378cca78eafdfb074ce85d.
2018-05-22 13:35:05 -04:00
Rob Rix
cf2011a811 Revert "Set the current module state."
This reverts commit c098e4684f24d8c3c0fe785758eb154cce9cb3a7.
2018-05-22 13:35:03 -04:00
Rob Rix
036df2416d Revert "Module inclusion uses the State effect."
This reverts commit 09b21e10807e27c6d5fc5b112478bfb60fc714bf.
2018-05-22 13:34:58 -04:00
Rob Rix
f9dea05ddb Revert "Bind the vertex."
This reverts commit 8e861863a5cee81cab3c22ceb3b0fb626b95fa5d.
2018-05-22 13:34:54 -04:00
Rob Rix
5e029b8f48 Bind the vertex. 2018-05-22 11:25:49 -04:00
Rob Rix
4226bab371 Module inclusion uses the State effect. 2018-05-22 11:14:40 -04:00
Rob Rix
93c315402d Set the current module state. 2018-05-22 11:03:36 -04:00
Rob Rix
a4f6b26ae0 Provide a state effect for the previous module. 2018-05-22 11:02:45 -04:00
Rob Rix
18b2cfc89f Merge branch 'master' into decompose-values 2018-05-18 14:14:55 -04:00
Rob Rix
0cd428286d Use unName exclusively. 2018-05-18 13:01:31 -04:00
Rob Rix
2c6f266945 Move Name into its own module. 2018-05-18 12:53:01 -04:00
Rob Rix
ca6b32378e Merge branch 'master' into allocator-effect 2018-05-18 11:09:20 -04:00
Rob Rix
008f628b58 Tweak the Evaluatable re-exports. 2018-05-18 11:07:03 -04:00
Rob Rix
1d883f4969 Move value & subtermValue into Control.Abstract.Value. 2018-05-18 10:47:33 -04:00
Rob Rix
edde9765a8 EvalError doesn’t need the value parameter any more. 2018-05-18 10:45:31 -04:00
Rob Rix
b8ae1e5219 Fix up some fallout from the merge. 2018-05-16 19:13:38 -04:00
Patrick Thomson
dafb3edaf5 Merge remote-tracking branch 'origin/master' into update-fastsum 2018-05-16 18:26:43 -04:00
Patrick Thomson
322f348103 inj -> inject 2018-05-16 18:25:02 -04:00
Rob Rix
dfd422f03b 🔥 the unused Identifier newtype. 2018-05-16 17:35:40 -04:00
Rob Rix
073273706b 🔥 constructorNameAndConstantFields. 2018-05-16 17:35:03 -04:00
Rob Rix
eedaf28861 Merge branch 'master' into hash-syntax-directly 2018-05-16 17:33:27 -04:00
Patrick Thomson
28803beefd Merge branch 'master' into update-fastsum 2018-05-16 16:50:41 -04:00
Patrick Thomson
6b0198cb00 Remove otiose -Sum prefixes from all Data.Sum operations.
There are no modules where we use both Union.inj and Sum.injectSum; as
such, it seems clumsy for such ubiquitous functions as inj and prj to
have such long names when there is no ambiguity. This restores the
codebase to much how it looked before we switched back to a richer
Data.Union.
2018-05-16 15:27:08 -04:00
Charlie Somerville
96f7b65775 Merge branch 'master' into charliesome/value-ref 2018-05-16 12:13:26 -07:00
Rob Rix
6baaadcc17 Compute labels over the syntax alone. 2018-05-16 14:36:33 -04:00
Rob Rix
2dd557064d Merge branch 'master' into fix-abstract-semantics 2018-05-16 09:20:00 -04:00
Rob Rix
ae74957342 🔥 the unused call graph analysis. 2018-05-16 09:08:07 -04:00
Rob Rix
1fd381b0ce Revert "Cache the environment at each program state."
This reverts commit 4c559aae6ad4f2adaeea58cc1ca37d64d97298d2.
2018-05-15 22:21:16 -04:00
Rob Rix
36075a3ff8 🔥 the InCache/OutCache synonyms. 2018-05-15 22:17:57 -04:00
Rob Rix
6f1c57086b Cache the environment at each program state. 2018-05-15 22:02:18 -04:00
Rob Rix
77850bcead Define a datatype holding the contents of the cache. 2018-05-15 21:53:22 -04:00
Rob Rix
8f23e1653c Spell out the reference to the heap. 2018-05-15 21:51:46 -04:00
Rob Rix
5805a90f9c Define a synonym for the contents of the cache. 2018-05-15 21:48:04 -04:00
Rob Rix
e677cd6700 Reset the environment on every iteration. 2018-05-15 21:37:48 -04:00
Rob Rix
ae85f16f03 Use synonyms for the in- and out-caches. 2018-05-15 19:24:02 -04:00
Rob Rix
57a365b82f Reformat all the caching signatures. 2018-05-15 19:19:51 -04:00
Rob Rix
62d76f6a17 Swap the order of the params to converge. 2018-05-15 19:17:40 -04:00
Rob Rix
47e92a766f Merge remote-tracking branch 'origin/master' into fix-abstract-semantics 2018-05-15 18:47:47 -04:00
Charlie Somerville
f19dabc20b Merge branch 'master' into charliesome/value-ref 2018-05-15 15:46:25 -07:00
Charlie Somerville
6ab67e3762 fix up cache for ValueRef 2018-05-15 14:31:45 -07:00
Charlie Somerville
4bfc5f9ecd rename subtermValue to subtermRef 2018-05-15 10:38:16 -07:00
Rob Rix
0f4efa278c Run module & term analyses in TermEvaluator. 2018-05-15 12:50:38 -04:00
Rob Rix
75b11eab95 Generalize providingLiveSet over the Effectful context. 2018-05-15 12:43:05 -04:00
Rob Rix
16f07a17d1 🔥 Output. 2018-05-14 18:40:22 -04:00
Rob Rix
347c18861e 🔥 the CustomConstructorName typeclass.
We can define ConstructorNameWithStrategy 'Custom instances instead.
2018-05-14 11:07:49 -04:00
Rob Rix
eb41652cbd Output to builders. 2018-05-11 16:37:04 -04:00
Rob Rix
28d4fc30fc Placate hlint. 2018-05-11 14:55:49 -04:00
Rob Rix
8f4fb96836 Serialize import/call graphs to DOT. 2018-05-11 14:35:27 -04:00
Rob Rix
e723b07d1e 🔥 renderGraph. 2018-05-11 13:25:45 -04:00
Rob Rix
5722538805 Define Analysis.Abstract.Graph using Data.Graph. 2018-05-11 12:22:51 -04:00
Rob Rix
38463e0712 Re-export the Lower typeclass. 2018-05-11 12:21:49 -04:00
Rob Rix
d567e892e1 Define CallGraph as Graph Name. 2018-05-11 12:15:43 -04:00
Rob Rix
bc5862adef 🔥 some redundant language extensions. 2018-05-11 09:15:20 -04:00
Rob Rix
6ba840e90b Go back to simple address types. 2018-05-11 08:35:43 -04:00
Rob Rix
db185d5e47 Move Located into Data.Abstract.Address. 2018-05-11 00:09:17 -04:00
Rob Rix
fe494ab5c4 Swap the order of the cell and location parameters to Cache. 2018-05-10 19:58:33 -04:00
Rob Rix
3a7ed73d66 Swap the order of the cell and location parameters to Configuration. 2018-05-10 19:57:15 -04:00
Rob Rix
2383cd05c5 Swap the order of the cell and location parameters to Heap. 2018-05-10 19:55:24 -04:00
Rob Rix
1fa5f9a44b Parameterize Located by the cell type. 2018-05-10 19:33:11 -04:00
Rob Rix
2abfd92678 Bump effects for https://github.com/joshvera/effects/pull/43 2018-05-10 18:27:10 -04:00
Rob Rix
423c229c73 Parameterize Cache by the cell type. 2018-05-10 12:37:06 -04:00
Rob Rix
5d51eb9a5e Parameterize Configuration by the cell type. 2018-05-10 12:33:49 -04:00
Rob Rix
dcad4d852c Parameterize Heap by the cell type. 2018-05-10 12:31:12 -04:00
Rob Rix
c22b80ccba Re-export Cell from Control.Abstract.Heap. 2018-05-10 12:30:15 -04:00
Rob Rix
e40a549ee3 Swap the order of the term & location parameters to Configuration, Cache, and Cacheable. 2018-05-09 13:46:40 -04:00
Rob Rix
4dca1c121e 🔥 the term parameter to Evaluator. 2018-05-09 12:35:01 -04:00
Rob Rix
db2c0e737e Use resumeLoadError to tighten up graphingLoadErrors. 2018-05-09 12:27:35 -04:00
Rob Rix
a12383f6e1 Rename the LoadError constructor to ModuleNotFound. 2018-05-09 12:23:04 -04:00
Rob Rix
662e385b97 LoadErrors are resumed with the evaluated result, rather than the list of modules to evaluate. 2018-05-09 12:20:23 -04:00
Rob Rix
21717cd079 Use the full type for the modules field of EvaluatingState. 2018-05-08 16:42:27 -04:00
Rob Rix
bd0b7e965e Define & use UnevaluatedModules/EvaluatedModules synonyms. 2018-05-08 14:19:25 -04:00
Rob Rix
cd16c36342 Merge branch 'master' into evaluate-closures-without-terms 2018-05-08 12:45:56 -04:00
Patrick Thomson
484011666c Merge remote-tracking branch 'origin/master' into task-graph-traces 2018-05-08 11:56:20 -04:00
Patrick Thomson
e9feb98835 Convert Graph and Task to use effectful traces.
This also removes `trace` from Prologue, since the monadic version is better.
2018-05-08 11:48:00 -04:00
Rob Rix
7022fbf346 Provide the jump table in evaluatePackageBodyWith. 2018-05-08 10:04:23 -04:00
Rob Rix
3c73571b0c Move currentModule/currentPackage into their own module. 2018-05-07 12:14:14 -04:00
Rob Rix
c2a8c0c5fa Use the combined export module. 2018-05-07 11:54:13 -04:00
Rob Rix
57ddf31ec5 Move the Heap accessors into their own module. 2018-05-07 11:49:59 -04:00
Rob Rix
920ddd893f Move the configuration accessor into its own module. 2018-05-07 11:49:47 -04:00
Rob Rix
d92a5d22a3 📝 the graphing handlers. 2018-05-07 08:35:49 -04:00
Rob Rix
be8dcef560 Accidental double-comment. 2018-05-07 08:31:58 -04:00
Rob Rix
0fddccf3c1 🔥 redundant parens. 2018-05-06 23:05:42 -04:00
Rob Rix
4f69f5e3de Merge branch 'master' into scope-effects-to-evaluation 2018-05-06 22:50:04 -04:00
Rob Rix
de5d427b01 Placate hlint. 2018-05-06 19:49:29 -04:00
Rob Rix
709c672bbb 🔥 a redundant constraint. 2018-05-06 17:50:58 -04:00
Rob Rix
5f0d80a6b1 🔥 the Bad* modules. 2018-05-06 17:16:10 -04:00
Rob Rix
9e4e98b2a9 Define a parameterized handler for ValueError. 2018-05-06 17:12:12 -04:00
Rob Rix
e9bec37d6d Define a parameterized handler for AddressError. 2018-05-06 17:08:49 -04:00
Rob Rix
55997e5c60 Define a parameterized handler for Unspecialized errors. 2018-05-06 17:05:34 -04:00
Rob Rix
df0f798299 Define a runEvalErrorWith handler. 2018-05-06 17:01:11 -04:00
Rob Rix
a47b4cb6f3 Define a parameterized handler for ResolutionError. 2018-05-06 16:50:49 -04:00
Rob Rix
71d5eebbab 🔥 Erroring. 2018-05-06 16:44:04 -04:00
Rob Rix
dcb771a29e 🔥 the TypeChecking module. 2018-05-06 16:41:36 -04:00
Rob Rix
136a9661d2 Split the LoadError handling out into a separate function. 2018-05-06 16:35:04 -04:00
Rob Rix
a1c5d96a93 Rephrase resume without the continuation. 2018-05-06 15:37:11 -04:00
Rob Rix
bfd95c29f8 Allow evaluating to occur in non-final positions. 2018-05-06 15:14:57 -04:00
Rob Rix
32bdafe20e 🔥 EvaluatingEffects. 2018-05-06 15:12:55 -04:00
Rob Rix
7d4db61f26 Add a handler for Fresh effects. 2018-05-06 14:57:03 -04:00
Rob Rix
fbfa61d2fc Add a helper to run an Effectful computation with no effects. 2018-05-06 14:47:06 -04:00
Rob Rix
3ad0b357c5 🔥 redundant constraints. 2018-05-06 14:44:46 -04:00
Rob Rix
6e54b67c1f Rename handleState to runState. 2018-05-06 14:28:19 -04:00
Rob Rix
2b5e62dc33 Rename handleReader to runReader. 2018-05-06 14:26:01 -04:00
Rob Rix
848543010d Handle LoopControl local to Evaluatable. 2018-05-06 14:12:41 -04:00
Rob Rix
5ab5e37c22 Continue with a value. 2018-05-06 14:05:50 -04:00
Rob Rix
bd997d8564 Handle Return locally to evalTerm. 2018-05-06 13:50:58 -04:00
Rob Rix
93e9f11491 Move the LoadStack effect into Evaluatable. 2018-05-06 13:36:49 -04:00
Rob Rix
4c5734452a 🔥 the termInfo parameter from Located. 2018-05-06 13:29:05 -04:00
Rob Rix
30b8002394 🔥 Origin altogether. 2018-05-06 13:25:28 -04:00
Rob Rix
89efff7346 Represent Origin as an even simpler triple. 2018-05-06 13:15:55 -04:00
Rob Rix
a1c9822a87 Represent Origin as a simple triple. 2018-05-06 13:07:40 -04:00
Rob Rix
c0b9a812a1 SomeOrigin doesn’t do anything fancy with the term type. 2018-05-06 12:37:30 -04:00
Rob Rix
88f64e7301 Specialize evaluating. 2018-05-06 12:08:09 -04:00
Rob Rix
3a2ba0b631 Generalize resumingBadModuleResolutions. 2018-05-06 12:04:29 -04:00
Rob Rix
b4185865c2 ResolutionError doesn’t need its value parameter. 2018-05-06 10:42:30 -04:00
Rob Rix
4529ee89e9 Don’t require callers to provide the module & term explicitly. 2018-05-06 09:13:46 -04:00
Rob Rix
d31dce7490 Provide empty cells with a Lower constraint. 2018-05-04 19:40:53 -04:00
Rob Rix
1e173c4f2c Use ScopedTypeVariables to allow type applications against erroring. 2018-05-04 19:38:14 -04:00
Rob Rix
f83b002e78 Export EvaluatingEffects. 2018-05-04 19:38:01 -04:00
Rob Rix
b5485e8ab8 Rephrase Caching as cachingTerms, convergingModules, and caching handlers. 2018-05-04 19:24:07 -04:00
Rob Rix
a3c04da9fe Clean up the Tracing module. 2018-05-04 19:13:23 -04:00
Rob Rix
cdb8f26de4 Rephrase Tracing as tracingTerms & tracing handlers. 2018-05-04 19:12:51 -04:00
Rob Rix
04fb5d36b1 Fix up some language extensions &c. 2018-05-04 19:10:01 -04:00
Rob Rix
4c83723fbe Correct the name of the location type parameter. 2018-05-04 19:06:04 -04:00
Rob Rix
88ec9d7230 Rephrase Dead as revivingTerms, killingModules, and providingDeadSet handlers. 2018-05-04 19:01:01 -04:00
Rob Rix
cdb7169ecb Derive a Lower instance for Dead. 2018-05-04 18:55:21 -04:00
Rob Rix
7d97d97cc4 Rephrase Collecting & Retaining as collectingTerms & providingLiveSet handlers. 2018-05-04 18:50:48 -04:00
Rob Rix
9af39cad2f Rephrase TypeChecking as a simple handler. 2018-05-04 18:43:45 -04:00
Rob Rix
9cd92dd310 Rephrase ImportGraphing as graphingTerms, graphingModules, and importGraphing handlers. 2018-05-04 18:40:22 -04:00
Rob Rix
8a8bfc05a3 Rephrase BadVariables as a resumingBadVariables handler. 2018-05-04 18:40:07 -04:00
Rob Rix
b5c2cd6282 Rephrase BadValues as a resumingBadValues handler. 2018-05-04 18:39:54 -04:00
Rob Rix
fefe5bf671 Rephrase BadSyntax as a resumingBadSyntax handler. 2018-05-04 18:39:41 -04:00
Rob Rix
3fba25f491 Rephrase BadModuleResolutions as a resumingBadModuleResolutions handler. 2018-05-04 18:39:30 -04:00
Rob Rix
c16263ee28 Rephrase BadAddresses as a resumingBadAddresses handler. 2018-05-04 18:39:14 -04:00
Rob Rix
c7462b2de3 Rephrase Evaluating as providingCurrentTerm, providingCurrentModule, and evaluating handlers. 2018-05-04 18:38:59 -04:00
Rob Rix
6972847818 Rephrase erroring as a simple handler. 2018-05-04 18:37:56 -04:00
Rob Rix
40af10cf39 Dedent some comments. 2018-05-04 12:31:06 -04:00
Rob Rix
0a6decad08 Make BadAddresses consistent with the other analyses. 2018-05-04 11:55:33 -04:00
Rob Rix
b55e7aa2c2 Make BadValues consistent with the other analyses. 2018-05-04 11:54:51 -04:00
Rob Rix
0d9002b6d7 Make BadModuleResolutions consistent with the other analyses. 2018-05-04 11:54:32 -04:00
Rob Rix
4108302aed Split MonadAnalysis into AnalyzeModule & AnalyzeTerm classes. 2018-05-04 11:19:36 -04:00
Rob Rix
e283ae0e37 Generalize the Caching functionality. 2018-05-02 19:27:20 -04:00
Rob Rix
083712864a Generalize a bunch of the import graph functions. 2018-05-02 19:26:25 -04:00
Rob Rix
64132b12a3 Redefine MonadEvaluator as a constraint synonym. 2018-05-02 19:25:57 -04:00
Rob Rix
d073020526 Clean up Evaluating’s imports & use the JumpTable synonym. 2018-05-02 18:45:07 -04:00
Rob Rix
63f4544496 Generalize scatter. 2018-05-02 18:42:58 -04:00
Rob Rix
8ca1a5112a Use raiseHandler when gathering nondeterminism. 2018-05-02 18:42:35 -04:00
Rob Rix
5d0fce0e6d Generalize a bunch of Interpreter instances. 2018-05-02 18:38:03 -04:00
Rob Rix
2ee3951af6 Export a bunch of types from Evaluator. 2018-05-02 18:29:40 -04:00
Rob Rix
d281a3f7e6 Make Evaluator a superclass of MonadEvaluator. 2018-05-02 17:51:54 -04:00
Rob Rix
911111987a Return to piecemeal state effects, and combine them in Evaluating. 2018-05-02 15:54:11 -04:00
Rob Rix
ccba15905d Modify the load stack locally. 2018-05-02 15:40:23 -04:00
Rob Rix
afdacec83f Add a helper to ask for the current SomeOrigin. 2018-05-02 14:59:59 -04:00
Rob Rix
baa3f41b39 Provide EvalModule in the body of evalModule. 2018-05-02 12:33:22 -04:00
Rob Rix
44c250bcf3 Use type applications instead of proxies when calling apply. 2018-05-02 12:13:01 -04:00
Rob Rix
ebc8e01cc4 Use our own local definition of Sum. 2018-05-02 12:00:15 -04:00
joshvera
19f0672f34 Separate import graphs into call graph and import graph analyses 2018-05-01 18:10:25 -04:00
joshvera
1f2e234549 Add CallGraph 2018-05-01 17:51:24 -04:00
Rob Rix
09fb3921b6 🔥 a redundant constraint. 2018-05-01 15:23:31 -04:00
Rob Rix
1400626b28 Provide the unevaluated module table in evaluatePackageBody. 2018-05-01 15:13:45 -04:00
Rob Rix
cc72724565 Note a TODO for the traceMs. 2018-05-01 09:29:32 -04:00
Rob Rix
4e15b94309 📝 the reason for the traceMs. 2018-05-01 09:28:44 -04:00
Rob Rix
490f11845d Merge branch 'master' into break-the-loop 2018-05-01 09:27:23 -04:00
Rob Rix
ae7f180eb0 Correct a couple of hints. 2018-04-30 17:29:31 -04:00
Rob Rix
ce8258fe2c Merge branch 'master' into break-the-loop 2018-04-30 17:19:01 -04:00
Josh Vera
753f8b0367 Merge branch 'master' into ruby-self-class 2018-04-30 17:13:22 -04:00
Rob Rix
81a69905a4 Revert "Module table entries have to be non-empty."
This reverts commit 9a5e83caec105358018b05c75095743cbbe80905.
2018-04-30 17:13:03 -04:00
Rob Rix
7c9c975071 Module table entries have to be non-empty. 2018-04-30 17:11:34 -04:00
Rob Rix
216b414995 LoadError doesn’t need a type parameter for the value. 2018-04-30 16:40:27 -04:00
Rob Rix
e738e91fa8 🔥 redundant constraints. 2018-04-30 16:31:25 -04:00
Rob Rix
e27541a7d8 Load & require use an EvalModule effect. 2018-04-30 16:20:54 -04:00
Patrick Thomson
214045dd98 Add support for array indexing.
To test:

```ruby
x = [1,2,3]
x[2]
```

should yield 3.
2018-04-30 16:13:19 -04:00
Rob Rix
25eafb5c53 Rename Eval to EvalClosure. 2018-04-30 15:50:05 -04:00
joshvera
47bcf721ad Replace ScopedEnvironmentError with EnvironmentLookupError 2018-04-30 15:33:32 -04:00
Rob Rix
7e2d181e66 Decouple evaluation of closure bodies from Evaluatable. 2018-04-30 15:23:17 -04:00
Rob Rix
01d16b1542 Rename lower to lowerBound. 2018-04-30 14:11:16 -04:00
Rob Rix
2fc2090e02 Move ValueError & throwValueError into Data.Abstract.Value. 2018-04-27 10:09:03 -04:00
Rob Rix
33d68f9d8d Treat breaks as an effect. 2018-04-27 10:00:07 -04:00
Rob Rix
2d8d27f645 Treat continues as an effect. 2018-04-27 09:48:18 -04:00
Rob Rix
ef4ad20252 Show an error message for uncaught returns. 2018-04-27 09:35:22 -04:00
Rob Rix
e7daba2677 Note the semantics of resuming uncaught returns. 2018-04-27 09:34:03 -04:00
Rob Rix
97c76c7fdc Rename ReturnThrow to Return, and use it as an effect. 2018-04-27 09:26:40 -04:00
Rob Rix
8ebf1e99f3 🔥 the origin field of EvaluatorState. 2018-04-26 14:49:00 -04:00
Rob Rix
41eea6bd4f Move LoopThrow & ReturnThrow into Evaluator. 2018-04-26 14:44:01 -04:00
Rob Rix
1942e20af1 🔥 runAnalysis. 2018-04-26 10:17:47 -04:00
Rob Rix
fc33283327 Swap the parameters to Interpreter. 2018-04-26 10:15:06 -04:00
Rob Rix
39a0b21c95 Spacing. 2018-04-26 08:49:28 -04:00
Rob Rix
fa34e9e499 Provide LoadError with an Erroring analysis. 2018-04-26 08:18:47 -04:00
Rob Rix
b9b529076b Give Interpreter a type family for the result type. 2018-04-25 19:12:54 -04:00
Rob Rix
8fd919d20e 🔥 the Monoid instance of Lower. 2018-04-25 18:35:30 -04:00
Rob Rix
2066b33aaf Rename Empty to Lower. 2018-04-25 18:25:02 -04:00
Rob Rix
1e5e766da9 Move the result type to the next line. 2018-04-25 18:11:14 -04:00
Rob Rix
17494e7b78 Reformat the result type. 2018-04-25 18:10:39 -04:00
Rob Rix
a6fbc1fe22 MonadEvaluator does not imply Fail. 2018-04-25 18:10:05 -04:00
Rob Rix
15dcb44302 Make getConfiguration a function rather than a method. 2018-04-25 18:07:06 -04:00
Rob Rix
8d11219264 Move askRoots/extraRoots into Evaluator. 2018-04-25 18:05:07 -04:00
Rob Rix
87f2f982ff Use raiseHandler to lift local into Caching. 2018-04-25 18:04:27 -04:00
Rob Rix
501eb2291f 🔥 a redundant membership constraint. 2018-04-25 18:04:17 -04:00
Rob Rix
032d5bb183 🔥 CachingEffects. 2018-04-25 18:03:17 -04:00
Rob Rix
40fcaa58b9 Define a Retaining analysis. 2018-04-25 17:53:45 -04:00
Rob Rix
f0635c0390 📝 Collecting. 2018-04-25 17:53:37 -04:00
Rob Rix
fbd013c3d8 Sort the deriving clause. 2018-04-25 17:52:17 -04:00
Rob Rix
39e9dc84a6 Apply some “hints,” begrudgingly. 2018-04-25 17:34:43 -04:00
Rob Rix
90e9fbb708 Just say empty. 2018-04-25 16:58:25 -04:00
Rob Rix
028c94e4ec Tidy up a bunch of language extensions. 2018-04-25 16:50:45 -04:00
Rob Rix
beb7261608 Derive the MonadAnalysis instance for TypeChecking. 2018-04-25 16:49:27 -04:00
Rob Rix
2267f24ea8 Merge branch 'master' into analyses-provide-and-handle-effects 2018-04-25 16:43:00 -04:00
Rob Rix
6646c8ca27 Rename Quietly to BadSyntax. 2018-04-25 15:44:44 -04:00
Rob Rix
3df75c2947 Derive a bunch of MonadAnalysis instances. 2018-04-25 15:41:30 -04:00
Rob Rix
4375692182 Rephrase MonadHole as a pure AbstractHole class. 2018-04-25 15:28:24 -04:00
Patrick Thomson
35a85e6a06 Merge branch 'master' into resumable-type-errors 2018-04-25 15:19:36 -04:00
Rob Rix
50bbe11d8d Interpret all of the analyses’ effects using raiseHandler. 2018-04-25 12:52:09 -04:00
Rob Rix
8ba011ea8d Use raiseHandler to lift BadValues’ handler. 2018-04-25 12:29:51 -04:00
Rob Rix
16393af491 Spacing. 2018-04-25 12:29:04 -04:00
Rob Rix
2270b0378f Handle ArithmeticError. 2018-04-25 12:18:46 -04:00
Patrick Thomson
83925dc194 Merge branch 'master' into resumable-type-errors 2018-04-25 12:16:31 -04:00
Rob Rix
b875664847 Merge branch 'master' into analyses-provide-and-handle-effects 2018-04-25 12:06:20 -04:00
Rob Rix
6c1eb6f120 Use the Empty instances for the initial values. 2018-04-25 12:05:36 -04:00
Rob Rix
76b00d1074 🔥 the Effects type family. 2018-04-25 11:57:01 -04:00
Timothy Clem
e8488329fd Merge branch 'master' into resume-on-resolutionerror 2018-04-25 07:57:53 -07:00
Rob Rix
0b0bd2a1a8 🔥 Control.Effect.Fresh in favour of Control.Monad.Effect.Fresh. 2018-04-25 10:40:58 -04:00
Rob Rix
2c770138ec Use runFresh instead of runEffect. 2018-04-25 09:58:42 -04:00
Rob Rix
5b18b47db7 Interpreters determine their effects. 2018-04-25 09:07:27 -04:00
Rob Rix
e3e6417994 Extract holes into a new, relatively unconstrained typeclass. 2018-04-25 09:06:36 -04:00
Rob Rix
02572cb49d Parens. 2018-04-25 09:04:30 -04:00
Rob Rix
2da077217c Move Unspecialized handling into Quietly. 2018-04-24 19:44:10 -04:00
Rob Rix
abcf625569 Define an Interpreter instance for Evaluating. 2018-04-24 19:16:24 -04:00
Rob Rix
ef45f3b2ec Define an Interpreter instance for Caching. 2018-04-24 19:02:15 -04:00
Rob Rix
c07272bc7e Define an Interpreter instance for ImportGraphing. 2018-04-24 18:57:22 -04:00
Rob Rix
ff3ba0fa9d Define an Interpreter instance for Collecting. 2018-04-24 18:55:38 -04:00
Rob Rix
b4dd5cffc8 Define an Interpreter instance for Quietly. 2018-04-24 18:53:18 -04:00
Rob Rix
882a542d19 Define a MonadAnalysis instance for DeadCode. 2018-04-24 18:51:56 -04:00
Rob Rix
db99f9efad Define an Interpreter instance for Tracing. 2018-04-24 18:49:26 -04:00
Rob Rix
0adb878ccf Re-export relay from Analysis. 2018-04-24 18:47:17 -04:00
Rob Rix
1cedeac8e1 Move Erroring into its own module. 2018-04-24 18:44:23 -04:00
Rob Rix
7a86d74d10 Define an Interpreter instance for BadVariables. 2018-04-24 18:39:46 -04:00
Rob Rix
5536876e13 Define an Interpreter instance for BadValues. 2018-04-24 18:39:32 -04:00
Rob Rix
ef4ed428cf Define an Interpreter instance for BadModuleResolutions. 2018-04-24 18:39:21 -04:00
Rob Rix
5df26fd4a9 Define an Interpreter instance for BadAddresses. 2018-04-24 18:39:12 -04:00
Rob Rix
68b748139d Swap the order of the BadVariables effects. 2018-04-24 18:39:01 -04:00
Patrick Thomson
5470073205 handle ArithmeticErrors properly. 2018-04-24 18:34:05 -04:00
Timothy Clem
af46dbd3aa Merge remote-tracking branch 'origin/master' into resume-on-resolutionerror 2018-04-24 14:00:07 -07:00
Rob Rix
739687f70e 🔥 a redundant State effect. 2018-04-24 16:59:38 -04:00
Rob Rix
77e8c4c6ed 🔥 some redundant language extensions. 2018-04-24 16:59:19 -04:00
Rob Rix
54d373d5ce 🔥 a redundant State effect. 2018-04-24 16:55:49 -04:00
Rob Rix
6de62e0cf8 🔥 some redundant parens. 2018-04-24 16:55:35 -04:00
Patrick Thomson
e986fdac39 merge fallout + remove MonadFail 2018-04-24 15:56:02 -04:00
Patrick Thomson
4fd34d0412 Merge remote-tracking branch 'origin/master' into resumable-type-errors 2018-04-24 15:50:20 -04:00
Patrick Thomson
f4e0ab8977 Working implementation. 2018-04-24 15:35:50 -04:00
Rob Rix
2875aa90a3 Tidy up the ImportGraphing language extensions. 2018-04-24 14:59:24 -04:00
Patrick Thomson
89c1403f89 WIP 2018-04-24 14:12:28 -04:00
Rob Rix
b042a6a6d4 Provide resumable exceptions in the analyses which resume them. 2018-04-24 13:01:56 -04:00
Rob Rix
a85e41666b Don’t re-export EvaluatorState & State from Evaluating. 2018-04-24 12:01:28 -04:00
Rob Rix
8bb4c0a22c Merge branch 'master' into pass-the-effects-list-around 2018-04-24 11:57:33 -04:00
Rob Rix
812adece0f 🔥 all the MonadFail instances.
We can still fail using `raise (fail …)`, but it’s less convenient now.
2018-04-24 11:45:35 -04:00
Rob Rix
61452e8978 Spacing. 2018-04-24 11:37:06 -04:00
Rob Rix
d1adb3939f Differentiate between unallocated and uninitialized addresses. 2018-04-24 11:34:13 -04:00
Rob Rix
5fa6dc28ea 🔥 MonadFresh. 2018-04-24 11:16:35 -04:00
Rob Rix
d3af580585 Clean up the language extensions. 2018-04-24 11:06:31 -04:00
Rob Rix
f16bf3e5ac Weaken the conditions on the MonadEvaluator & MonadAnalysis instances for Evaluating. 2018-04-24 10:43:42 -04:00
Rob Rix
d79d17768b 🔥 the lens helpers in Evaluating. 2018-04-24 10:37:24 -04:00
Rob Rix
3039dcf8d0 🔥 a couple of redundant membership constraints on the origin. 2018-04-24 10:36:32 -04:00
Rob Rix
4978c8ce24 Define a single, universal instance of MonadModuleTable. 2018-04-24 10:34:50 -04:00
Rob Rix
7d39812ea3 Define a single, universal instance of MonadHeap. 2018-04-24 10:30:21 -04:00
Rob Rix
b109fcd51f Define a single, universal instance of MonadEnvironment. 2018-04-24 10:27:59 -04:00
Rob Rix
ddc06e6aeb Define a single MonadControl instance once and for all. 2018-04-24 10:23:20 -04:00
Rob Rix
035c606dca Move EvaluatingState into Evaluator and rename to EvaluatorState. 2018-04-24 10:18:14 -04:00
Rob Rix
47ba9a6d2b 🔥 a couple of dependencies on EvaluatingState. 2018-04-24 10:00:37 -04:00
Patrick Thomson
9ca80fe933 Merge cruft + rename ControlThrow 2018-04-23 19:31:56 -04:00
Rob Rix
09c21259a2 Parameterize all the typeclasses by the effect type. 2018-04-23 19:12:55 -04:00
Timothy Clem
7f95a26720 Remove this traceM 2018-04-23 15:47:42 -07:00
Timothy Clem
c3bf5133c8 Support Go import graphing a bit better 2018-04-23 15:47:23 -07:00
Timothy Clem
50e359c5a5 Allow getting the current Package 2018-04-23 15:46:56 -07:00
Timothy Clem
faae1a1020 Track the paths we searched in resolution notfound errors 2018-04-23 13:26:21 -07:00
Timothy Clem
d5b67c0613 Use a single NotFoundError instead of language specific ResolutionErrors 2018-04-23 13:18:52 -07:00
Patrick Thomson
a57fd63da5 Add support for break and continue inside loops.
Similar to @charliesome's implementation of return, we throw a
non-resumable exception inside loop invocations, and handle these
cases inside MonadValue's `loop` function.
2018-04-23 12:46:57 -04:00
Charlie Somerville
2e21ecfd16 make ControlThrow a non-resumable exception 2018-04-23 11:54:20 +10:00
Charlie Somerville
41fd599843 rename throwException to throwResumable, resumeException to resume 2018-04-23 11:44:29 +10:00
Charlie Somerville
ae8ca35222 add a ControlThrow exception type 2018-04-20 14:47:49 +10:00
joshvera
19a7e0e4bd appease hlint 2018-04-19 13:52:50 -04:00
joshvera
c8784ffab9 Revert "Yield maybes from scopedEnvironment, and values from ScopedEnvironmentErrors"
This reverts commit d09318a14143b80ae4e90a7192e94b0f9b512bd3.
2018-04-19 13:45:39 -04:00
joshvera
04428df6bd Return holes from uninitialized address errors 2018-04-19 13:12:51 -04:00
joshvera
d8e446f0a7 Add a hole value and don't run a condition if it depends on a hole 2018-04-19 12:20:24 -04:00
joshvera
9d7038a53b Yield maybes from scopedEnvironment, and values from ScopedEnvironmentErrors 2018-04-18 17:56:27 -04:00
joshvera
1fcb16da32 Add logging 2018-04-18 15:16:15 -04:00
joshvera
249e2977ab Throw and catch export errors 2018-04-17 19:12:53 -04:00
Timothy Clem
42f680fc47 Merge remote-tracking branch 'origin/fix-graph-errors' into typescript-graphs 2018-04-17 14:24:41 -07:00
Timothy Clem
8120b2af73 Merge remote-tracking branch 'origin/master' into typescript-graphs 2018-04-17 14:24:10 -07:00
joshvera
a009d78f81 Merge remote-tracking branch 'origin/typescript-graphs' into fix-graph-errors 2018-04-17 17:07:44 -04:00
Patrick Thomson
dfe40b4add Remove fails from Data.Syntax.Literal. 2018-04-17 15:33:45 -04:00
Patrick Thomson
7344a82295 WIP 2018-04-17 15:03:51 -04:00
Timothy Clem
0c5cabd93c Merge remote-tracking branch 'origin/fix-graph-errors' into typescript-graphs 2018-04-17 11:51:03 -07:00
joshvera
457378c1e1 Merge remote-tracking branch 'origin/typescript-graphs' into fix-graph-errors 2018-04-17 14:50:17 -04:00
Timothy Clem
d4769e41ba Throw instead of failing for bad pair value 2018-04-17 11:43:02 -07:00
Timothy Clem
850e8f238a Keep a load stack to break circular loads/imports 2018-04-17 11:02:47 -07:00