Fix duplicated pointer types

This commit is contained in:
Sasha Koshka 2024-01-25 07:36:51 +00:00
parent e32655e285
commit dae023b2af
4 changed files with 5 additions and 6 deletions

View File

@ -30,7 +30,7 @@ func (this *generator) generateType (ty entity.Type) (llvm.Type, error) {
case *entity.TypeStruct:
return this.generateTypeStruct(ty.(*entity.TypeStruct))
case *entity.TypeInterface:
return this.generateTypeInerface(ty.(*entity.TypeInterface))
return this.generateTypeInterface(ty.(*entity.TypeInterface))
case *entity.TypeInt:
return this.generateTypeInt(ty.(*entity.TypeInt))
case *entity.TypeFloat:

View File

@ -11,7 +11,7 @@ func (this *generator) generateTypeNamed (ty *entity.TypeNamed) (llvm.Type, erro
}
func (this *generator) generateTypePointer (ty *entity.TypePointer) (llvm.Type, error) {
return llvm.Pointer, nil
return new(llvm.TypePointer), nil
}
func (this *generator) generateTypeSlice (ty *entity.TypeSlice) (llvm.Type, error) {
@ -46,7 +46,7 @@ func (this *generator) generateTypeStruct (ty *entity.TypeStruct) (llvm.Type, er
return irStruct, nil
}
func (this *generator) generateTypeInerface (ty *entity.TypeInterface) (llvm.Type, error) {
func (this *generator) generateTypeInterface (ty *entity.TypeInterface) (llvm.Type, error) {
irStruct := &llvm.TypeStruct {
Fields: make([]llvm.Type, len(ty.Behaviors) + 1),
}

View File

@ -72,10 +72,11 @@ define void @main() {
%1 = alloca %A
%2 = load %A, ptr %1
%3 = alloca %B
%4 = load %B, ptr %1
%4 = load %B, ptr %3
%5 = alloca %C
%6 = load %C, ptr %5
ret void
}
`,
`
A: *Byte

View File

@ -15,12 +15,10 @@ type AbstractType struct {
}
func (this *AbstractType) Name () string {
// fmt.Printf("%p.Name %s\n", this, this.name)
return this.name
}
func (this *AbstractType) SetName (name string) {
// fmt.Printf("%p.SetName %s\n", this, name)
this.name = name
}