Danila Fedorin
137455b0f4
Get rid of more constructors and make mangled names optional.
3 years ago
Danila Fedorin
56bdbdc6ee
Remove unneeded explicit calls to std::string
3 years ago
Danila Fedorin
58c6421681
Fix silent error in set_mangled_name
3 years ago
Danila Fedorin
77c9b27b26
Fix use of wrong environment for name mangling.
3 years ago
Danila Fedorin
418126ac1f
Remove the parent method from type_env.
3 years ago
Danila Fedorin
39bc6bb99e
Roll back optimization changes.
3 years ago
Danila Fedorin
8a44109f93
Use an instruction instead of a special-case boolean instruction.
3 years ago
Danila Fedorin
fb5a8a5a73
Change tagging to assume sign extension.
...
ARM and x86_64 require "real" pointers to be
sign-extended in their top bits. This means
a working pointer is guaranteed to have either "11"
as leading bits, or "00". So, to tag a "fake" pointer
which is an unboxed 32-bit integer, we simply toggle
the leading bit.
3 years ago
Danila Fedorin
dfe47548cf
Make a few more things classes.
3 years ago
Danila Fedorin
a5597aeae0
Make global scope a class.
3 years ago
Danila Fedorin
127f51041b
Make type_mgr a class.
3 years ago
Danila Fedorin
f4b5069125
Make mangler a class and reformat graph.
3 years ago
Danila Fedorin
3fbca52845
Make env a class.
3 years ago
Danila Fedorin
8b897c9636
Make type_env a class.
3 years ago
Danila Fedorin
6a655827d3
Make llvm_context a class.
3 years ago
Danila Fedorin
ed1f9a1460
Make some refactors for name mangling and encapsulation.
3 years ago
Danila Fedorin
18aac4c8fd
Require mangled names for global variables.
3 years ago
Danila Fedorin
03465c07ce
Refactor errors and update post draft.
3 years ago
Danila Fedorin
4cdb9360fb
Factor type into case strategy constructor.
3 years ago
Danila Fedorin
9a591d6da6
Switch to using FILE* and default YY_INPUT.
3 years ago
Danila Fedorin
820a8bc5e9
Change constructor visibility to global.
...
Constructors are always effectively global.
3 years ago
Danila Fedorin
30b7b4143b
Try out unboxing integers.
3 years ago
Danila Fedorin
362d9b05dc
Enable more syntax.
3 years ago
Danila Fedorin
99f7f45d51
Actually use the environment for binop functions.
3 years ago
Danila Fedorin
e7afa126c8
Stop using mangled names for local variables.
3 years ago
Danila Fedorin
688463570c
Add assertion regarding local name mangling.
3 years ago
Danila Fedorin
d3c719436a
Move common code into loops.
3 years ago
Danila Fedorin
a940503cea
Add compile-time flag to disable output.
3 years ago
Danila Fedorin
b23ffe1b21
Tweak parsed type error warning.
3 years ago
Danila Fedorin
828be79ab5
Make make_case_for throw from the second time on.
...
Also clean up the errors thrown a little bit.
3 years ago
Danila Fedorin
0e816e523a
Add programs to trigger error cases.
3 years ago
Danila Fedorin
2ede230704
Add type errors to identifier nodes.
3 years ago
Danila Fedorin
87b51819e8
Prevent case compilation from crashing and burning.
3 years ago
Danila Fedorin
b03e68bb28
Add more built-in boolean-specific instructions.
3 years ago
Danila Fedorin
9393e35a84
Register booleans as internal types.
3 years ago
Danila Fedorin
b6df158280
Make sure to delete LLVM target machine.
3 years ago
Danila Fedorin
adc95c8d04
Initialize graph indegree.
3 years ago
Danila Fedorin
c7b2a4959f
Add prototype impl of case specialization.
...
Boolean cases could be translated to ifs, and
integer cases to jumps. That's still in progress.
3 years ago
Danila Fedorin
c1a8dc4557
Add 'internal' types.
3 years ago
Danila Fedorin
92a9ec2021
Replace throw 0 with real exceptions or assertions.
3 years ago
Danila Fedorin
1f7a53ccf6
Add sources for unification type errors.
3 years ago
Danila Fedorin
80f181cbb6
Add extra line after code fence.
3 years ago
Danila Fedorin
34357163cd
Print locations in non-unification type errors.
3 years ago
Danila Fedorin
945d0f31c3
Add locations to patterns.
3 years ago
Danila Fedorin
bdaa046a8c
Require C++17 for optionals
3 years ago
Danila Fedorin
588ce99601
Add locations to error reporting.
3 years ago
Danila Fedorin
07ac3d72e4
Add a method to print location.
3 years ago
Danila Fedorin
2752703038
Touch up source index code.
3 years ago
Danila Fedorin
c648e20a02
Keep track of locations in definitions.
3 years ago
Danila Fedorin
350a630213
Make driver keep track of line numbers and locations.
3 years ago