feat(ast): function pointers, designator decay, and indirect call - #75
Merged
Conversation
Contributor
|
Tick the box to add this pull request to the merge queue (same as
|
rieske
force-pushed
the
feature/initializers
branch
from
July 24, 2026 13:39
4a601af to
f77f691
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 24, 2026 13:39
e5de99e to
fd63bb8
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 24, 2026 13:57
f77f691 to
4c02dfb
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 24, 2026 13:59
fd63bb8 to
68f37b7
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 24, 2026 14:09
4c02dfb to
6755713
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 24, 2026 14:11
68f37b7 to
7f32ac9
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 06:32
6755713 to
ba5ca80
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 06:32
c38b703 to
7f8f730
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 07:19
ba5ca80 to
8fce1b7
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 07:19
7f8f730 to
fbae320
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 07:31
8fce1b7 to
eac2cee
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 07:31
fbae320 to
7cabc36
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 07:54
eac2cee to
7e7148f
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 07:54
7cabc36 to
5c794b0
Compare
rieske
added a commit
that referenced
this pull request
Jul 25, 2026
- Remove dead FP codegen (functionAddress, indirect Call, r10 helper) - Call is direct-only until #75 - Drop unused FunctionDesignatorPlan from AddressPlan on this PR - Unit tests: TypeQuery + AnnotationStore - More StructsTest paths (errors, nested, sizeof, whole assign)
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 08:19
7e7148f to
a1c41a5
Compare
rieske
force-pushed
the
feature/function-pointers
branch
2 times, most recently
from
July 25, 2026 11:30
33b6104 to
eb89c52
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 11:30
a1c41a5 to
28e11ea
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 11:33
eb89c52 to
b98f978
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 11:33
28e11ea to
25bffc1
Compare
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 11:44
b98f978 to
3fcfb8c
Compare
rieske
force-pushed
the
feature/initializers
branch
from
July 25, 2026 11:44
25bffc1 to
20ee8fb
Compare
rieske
added a commit
that referenced
this pull request
Jul 25, 2026
- Cover unscopedSymbolName and non-function call error paths - Unit-test functionAddress and callProcedureIndirect (reg + mem) - Drop dead designator/call fallbacks SA never takes
- Expression::FunctionDesignator + FunctionDesignatorPlan on store - CallPlan.indirect for indirect calls; FunctionAddress IR - resolveCallee Direct|Indirect; collapsed designator lookup - FunctionPointersTest + fuzz coverage
Re-introduce FunctionDesignatorPlan, indirect Call, and StackMachine functionAddress / callProcedureIndirect on the FP tip after #73 removed them to recover Coveralls.
- Cover unscopedSymbolName and non-function call error paths - Unit-test functionAddress and callProcedureIndirect (reg + mem) - Drop dead designator/call fallbacks SA never takes
rieske
force-pushed
the
feature/function-pointers
branch
from
July 25, 2026 12:07
3a99003 to
d1f5e6a
Compare
- Drop designatorName from Expression; FunctionDesignatorPlan is the label - CallPlan.kind is Direct|Indirect (remove unused Normal + bool) - resolveCallee returns optional Callee; typecheck before setCallPlan - CG * on pointer-to-function uses TypeQuery, not missing lvalue
- Remove unused FunctionCall setSymbol/getSymbol (call shape is store-only) - IR Call carries CallPlan::Kind instead of a parallel bool - Assert designator form always has FunctionDesignatorPlan
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
FunctionAddressIR)fp = f/fp = &fand call-throughfp()/(*fp)()Call+StackMachine::callProcedureIndirect(callee in r10)FunctionPointersTest; designator-as-argument accepted; designator→int still rejectedStack
PR F of remaining track. Base: #74 (initializers) → #73 (structs).
Test plan
ctest