Skip to content

Commit 338d3c0

Browse files
committed
Feature(compiler): Declare name for struct type
1 parent 21debc5 commit 338d3c0

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

src/backend/llvm/code-generation/class-statement.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ export class ClassDeclarationGenerator implements NodeGenerateInterface<ts.Class
2020

2121
const properties = ctx.typeChecker.getPropertiesOfType(classType);
2222

23-
const struct = llvm.StructType.get(ctx.llvmContext, properties.map(
23+
const structName = node.name ? <string>node.name.escapedText : 'class_' + Math.random();
24+
const struct = llvm.StructType.create(ctx.llvmContext, structName);
25+
26+
struct.setBody(properties.map(
2427
(property: ts.Symbol) => {
2528
const nativeType = NativeTypeResolver.getType(
2629
ctx.typeChecker.getTypeOfSymbolAtLocation(property, node),
@@ -31,7 +34,7 @@ export class ClassDeclarationGenerator implements NodeGenerateInterface<ts.Class
3134
}
3235
));
3336

34-
ctx.scope.classes.set(node.name ? <string>node.name.escapedText : 'class_' + Math.random(), struct);
37+
ctx.scope.classes.set(structName, struct);
3538

3639
if (node.members) {
3740
node.members.forEach(

0 commit comments

Comments
 (0)