More using qualified names in IR

This commit is contained in:
Sasha Koshka 2024-01-27 18:16:30 -05:00
parent 2f8b3fcad6
commit 928fef02cd
7 changed files with 138 additions and 23 deletions

View File

@ -102,7 +102,7 @@ func (this *generator) generateSubscriptLoc (subscript *entity.Subscript) (llvm.
sourceType := analyzer.ReduceToBase(subscript.Slice.Type()) sourceType := analyzer.ReduceToBase(subscript.Slice.Type())
switch sourceType := sourceType.(type) { switch sourceType := sourceType.(type) {
case *entity.TypeSlice: case *entity.TypeSlice:
irSourceType, err := this.generateType(sourceType) irSourceType, err := this.generateType(subscript.Slice.Type())
if err != nil { return nil, err } if err != nil { return nil, err }
elementType = sourceType.Element elementType = sourceType.Element
dataAddress = this.getSliceDataAddress(source, irSourceType) dataAddress = this.getSliceDataAddress(source, irSourceType)
@ -134,10 +134,9 @@ func (this *generator) generateMemberAccessLoc (access *entity.MemberAccess) (ll
source, err := this.generateExpressionLoc(access.Source) source, err := this.generateExpressionLoc(access.Source)
if err != nil { return nil, err } if err != nil { return nil, err }
switch sourceTypeAny := analyzer.ReduceToBase(access.Source.Type()).(type) { switch sourceType := analyzer.ReduceToBase(access.Source.Type()).(type) {
case *entity.TypeStruct: case *entity.TypeStruct:
sourceType := sourceTypeAny irSourceType, err := this.generateType(access.Source.Type())
irSourceType, err := this.generateType(sourceType)
if err != nil { return nil, err } if err != nil { return nil, err }
offset := this.getStructMemberIndex(sourceType, access.Member) offset := this.getStructMemberIndex(sourceType, access.Member)
return this.blockManager.NewGetElementPtr ( return this.blockManager.NewGetElementPtr (