Tristan B. Kildaire
dc01256e60
Fuck this is complicated (1/2)
...
Going to need proper tree and also usign static now in a way that is legal but want it to be illegal to test for loops
2021-06-06 22:45:49 +02:00
Tristan B. Kildaire
a604f4ca27
Return immediatelly if the class has been statically initialized already
2021-06-06 21:43:42 +02:00
Tristan B. Kildaire
e418d98e73
Works, need to remove dupicates, this will prevent infinite mutual recursion (later)
...
too
2021-06-06 21:38:29 +02:00
Tristan B. Kildaire
5f30ba1ac9
Don't init the class already being initted
2021-06-06 21:34:23 +02:00
Tristan B. Kildaire
a30b544d67
Made initial state default to virtual (non-static) as intended
2021-06-06 20:06:27 +02:00
Tristan B. Kildaire
9609e11303
Process the class itself then too, because if it must be initted as it is referenced by a variable's type then we must do the initializtions (static) of said class first and then that variable is satisfied (it doesn't matter too much without an assignment expresison but would with it hence we definately want this.
2021-06-06 19:10:26 +02:00
Tristan B. Kildaire
4f0d601a0e
Added more tests
...
Added print out for case where parent of class type being referenced is not at module-level hence static-ness cannot be guaranteed and we will need to process this (possibly recursively)
2021-06-06 19:04:26 +02:00
Tristan B. Kildaire
257ff39b7d
Removed other stuff that should not be tested now
2021-06-06 18:57:36 +02:00
Tristan B. Kildaire
343564f287
All entities must be dependent on themselves (reason: see last commit)
2021-06-06 18:46:21 +02:00
Tristan B. Kildaire
15bce32ef6
WIP: Everything should be dependent on itself, just so we can build a tree afterwards else things like `int j;` at module-level will not be remembered
2021-06-06 18:44:47 +02:00
Tristan B. Kildaire
bf6a724783
Added intermediary type to differentiate between user-defined types, Class, Struct and built-in types like Number and Void
2021-06-06 18:42:23 +02:00
Tristan B. Kildaire
dd1ac9bdc3
Added basic type to the unit test to test that it doesn't add any dependencies.
2021-06-06 18:39:15 +02:00
Tristan B. Kildaire
0734a14f90
Added test case to test this.
2021-06-06 18:38:36 +02:00
Tristan B. Kildaire
4aeca83d90
Variables declared at module-level with types that are class types must set a dependency on said class running its static initializer
2021-06-06 18:38:07 +02:00
Tristan B. Kildaire
b2eca50f5f
Print out ndependencies after generating the list
2021-06-06 18:37:34 +02:00
Tristan B. Kildaire
3294076faa
If a variable declaration occurs at the module level an it is of a type that is non-basic then it is only a class-type and it must be statically initialized
...
(An actual check as to whether the type idk
2021-06-06 18:33:33 +02:00
Tristan B. Kildaire
8e2807c24a
WIP: Module-level type checking
2021-06-06 18:13:12 +02:00
Tristan B. Kildaire
bffcaa0898
Updated TODO
...
Removed static marking of Module-level class and struct definitions
2021-06-06 18:05:19 +02:00
Tristan B. Kildaire
3a9a43b258
Make all structs and classes at the Module level static
2021-06-06 17:59:46 +02:00
Tristan B. Kildaire
420ec5060d
TODO: Restarting dependency stuff
2021-06-06 17:56:31 +02:00
Tristan B. Kildaire
d6c38eee34
Actully idk what I am doing, this is a weird mix of things. I should first focus on classes and static initializations. Then when a type is used of a class that should cause it to init
2021-06-06 17:44:16 +02:00
Tristan B. Kildaire
7e8e4d6f56
Disabled visitation code for now
2021-06-06 17:33:14 +02:00
Tristan B. Kildaire
ea411066aa
Grouped dependency code toghether
2021-06-06 17:15:48 +02:00
Tristan B. Kildaire
bf226a16c7
Switched around
2021-06-06 17:14:24 +02:00
Tristan B. Kildaire
0596611295
Reliance list was keyed incorrecttly
2021-06-06 17:13:32 +02:00
Tristan B. Kildaire
4c538a95f5
Dependency list construction works
2021-06-06 17:08:55 +02:00
Tristan B. Kildaire
3501910f32
WIP: Dependancy "tree" construction
...
Added collection of all static members per each class in a container
2021-06-06 16:52:47 +02:00
Tristan B. Kildaire
0023fe38f3
Renamed type checking test case
2021-06-06 16:06:40 +02:00
Tristan B. Kildaire
e8f7a93602
Updated test case for basic dependance
2021-06-06 16:05:27 +02:00
Tristan B. Kildaire
6de8e49a1f
Added new test case for use in type_checking
2021-06-06 15:59:01 +02:00
Tristan B. Kildaire
70623ecd4a
Check off things already implemented
...
Update test case to test them
2021-06-06 15:54:15 +02:00
Tristan B. Kildaire
3f9375c6ed
Added support for `static` (complete support) within structs
...
Updated test case to test this
2021-06-06 15:51:06 +02:00
Tristan B. Kildaire
1ddd7f102b
Support for `static` without preceding accessor, has been added
2021-06-06 15:43:01 +02:00
Tristan B. Kildaire
82cffeaccb
WIP: Adding support for `static` keyword without preceding accessor
2021-06-06 15:35:04 +02:00
Tristan B. Kildaire
f0dae29533
Added support for `static` keyword when preceded by an accessor
2021-06-06 15:33:20 +02:00
Tristan B. Velloza Kildaire
948238d4e9
Added InitScope, for STATIC
2021-06-04 21:28:30 +02:00
Tristan B. Velloza Kildaire
c8490bfe36
WIP
2021-06-04 14:52:22 +02:00
Tristan B. Velloza Kildaire
0bf4a7f658
WIP: Adding static support
2021-06-04 14:47:39 +02:00
Tristan B. Velloza Kildaire
6225b5e62f
WIP: Need to add support for `static`
2021-06-04 14:39:49 +02:00
Tristan B. Velloza Kildaire
16bfdbfc2f
Moved case with path resolution not visited to another test case
2021-06-04 13:43:44 +02:00
Tristan B. Velloza Kildaire
4eb0c97dc7
Works without it
2021-06-04 13:42:47 +02:00
Tristan B. Velloza Kildaire
1974428772
Found my bug
2021-06-04 13:42:26 +02:00
Tristan B. Velloza Kildaire
440154b228
Visitation by UFOs, damn
2021-06-04 13:39:11 +02:00
Tristan B. Velloza Kildaire
f024bedaaa
WIP: Need to add support for the `new` keyword
2021-06-04 12:04:58 +02:00
Tristan B. Velloza Kildaire
440addf664
Merge branch 'develop' into codegen
2021-06-04 11:58:56 +02:00
Tristan B. Velloza Kildaire
9cf1a181a2
TIme for expression checking
2021-06-04 11:57:25 +02:00
Tristan B. Velloza Kildaire
7bd8bfdde0
Aded back in cause why not.
...
Visitation wil, impy marking in the sense that if we do expression checking then it can only rely on alrady visited.
2021-06-04 11:56:47 +02:00
Tristan B. Velloza Kildaire
e5873fecb3
Idea: Added visitation, we don't need marking tbh , we checking visitaion, marking is implcii in that if there is an error, we exit compiation rpocess, else we continue (which implies marked i.e. the type checking succeeded)
2021-06-04 11:55:22 +02:00
Tristan B. Velloza Kildaire
6c0a0ec69e
Idea: /* TODO: Got it, we NEED a dependency tree, to know chihs is being processed previosuly */
2021-06-04 11:44:51 +02:00
Tristan B. Velloza Kildaire
3051d6b66f
Added marking capability to Statement
2021-06-04 11:36:58 +02:00