Fix various resolved types of const pointers #2271
Open
+340
−125
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.
Alternative to #2265
Binding
struct that has two fields:type: Type
andis_const: bool
. Examples of whenis_const
istrue
are:i32
andtrue
foo
that refers to a previously declaredconst foo
&foo
(i.e.&&foo
is of type*const *Foo
for a givenvar foo: Foo
)&'a'
is a*const comptime_int
,&42
is a*const comptime_int
,&.foo
is a*const @Type(.enum_literal)
,&"foo"
is a*const *const [3:0]u8
)resolveBindingOfNode{,Internal,Uncached}
resolveTypeOfNode{,Internal}
are now just helper functions that delegate toresolveBindingOfNode{,Internal}
resolveTypeOfNodeUncached
still handles most AST nodes except for the following which are now handled byresolveBindingOfNodeUncached
:identifier
address_of
field_access
slice
slice_sentinel
slice_open
array_access
resolveTypeOfNodeUncached
, while more special cases involving mutability can be handled inresolveBindingOfNodeUncached
.