~pixelherodev/Project_Tricarbon#27: 
Bring analysis into conformance with the spec

  • Revamp the queue
    • Receive nodes in other trees needing analysis from subprocesses
    • Give subprocesses a list of nodes to process
  • Revamp usage analysis
    • Generate compile-time dependency graph
    • Fix recursion logic
    • Track analyzed nodes, don't analyze the same node twice
    • Add headerization of imports
      • Elide function bodies, elide non-pub data
    • Detect infinite dependency loops
  • Revamp scope resolution
    • Use declarative scope information from the parser, if present
    • Teach the parser to generate declarative scope info
    • Remove declarative scope information generation from sema/scope
    • Cache resolved decls
    • Talk to the queue when analyzing lookup in headerized structure
      • If the headerized structure is the current file, just analyze it directly
  • Add dependency serialization
    • Climb dependency graph bottom-up, generate serial list that satisfies dependencies
    • Error out if constraints cannot be satisfied
  • Revamp semantic extraction
    • Iterate over serialized dependency list
    • Invoke type and expr analysis from sema driver per-node instead of on the whole tree
Status
RESOLVED FIXED
Submitter
~pixelherodev
Assigned to
No-one
Submitted
6 months ago
Updated
2 months ago
Labels
No labels applied.

~pixelherodev 5 months ago

Remaining:

  • Scope revamp
  • Full dependency serialization (it's half-assed - literally twenty lines of code using qsort - at present, but still good enough for the current tests :)
  • Clean up type analysis' recursion where it shouldn't be (now that it uses the dep list)
  • Headerization
    • Passing work to other workers when subprocessing

~pixelherodev 5 months ago

Remaining:

  • Clean up type analysis' recursion where it shouldn't be (now that it uses the dep list)
  • Headerization
    • Passing work to other workers when subprocessing

~pixelherodev REPORTED FIXED 2 months ago

More needs to be implemented, but what's there now is conformant

Register here or Log in to comment, or comment via email.