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