fix: parser sets typeName for pointer types, simplify Lcx_LowerParam
This commit is contained in:
@@ -318,11 +318,11 @@ func Lcx_LowerParam(out: *HirParam, p: *Param) {
|
||||
out.name = p.name;
|
||||
if p.refParamType != null as *TypeExpr {
|
||||
out.typeKind = p.refParamType.kind;
|
||||
// For pointer types, construct "PointeeType*"
|
||||
if p.refParamType.kind == tekPointer && p.refParamType.pointerPointee != null as *TypeExpr {
|
||||
out.typeName = String_Concat(p.refParamType.pointerPointee.typeName, "*");
|
||||
} else if !String_Eq(p.refParamType.typeName, "") {
|
||||
// Use typeName directly if set (parser may have constructed "String*")
|
||||
if !String_Eq(p.refParamType.typeName, "") {
|
||||
out.typeName = p.refParamType.typeName;
|
||||
} else if p.refParamType.kind == tekPointer && p.refParamType.pointerPointee != null as *TypeExpr {
|
||||
out.typeName = String_Concat(p.refParamType.pointerPointee.typeName, "*");
|
||||
} else {
|
||||
out.typeName = "";
|
||||
}
|
||||
|
||||
@@ -109,6 +109,16 @@ func parserParseType(p: *Parser) -> *TypeExpr {
|
||||
te.line = line;
|
||||
te.column = col;
|
||||
te.pointerPointee = parserParseType(p);
|
||||
// Set typeName to "String*" for String pointer, else "int*"
|
||||
if te.pointerPointee != null as *TypeExpr {
|
||||
if String_Eq(te.pointerPointee.typeName, "String") {
|
||||
te.typeName = "String*";
|
||||
} else if String_Eq(te.pointerPointee.typeName, "int") {
|
||||
te.typeName = "int*";
|
||||
} else {
|
||||
te.typeName = "int*";
|
||||
}
|
||||
}
|
||||
return te;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user