Skip to content

Commit c214b10

Browse files
ddobrevtritao
authored andcommitted
Check type maps when printing C++ for pointers
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
1 parent 9091fd3 commit c214b10

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

src/Generator.Tests/AST/TestAST.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,11 @@ public void TestOriginalNamesOfSpecializations()
491491
[Test]
492492
public void TestPrintingConstPointerWithConstType()
493493
{
494-
var cppTypePrinter = new CppTypePrinter(Context) { ScopeKind = TypePrintScopeKind.Qualified };
494+
var cppTypePrinter = new CppTypePrinter(Context)
495+
{
496+
ScopeKind = TypePrintScopeKind.Qualified,
497+
ResolveTypeMaps = false
498+
};
495499
var builtin = new BuiltinType(PrimitiveType.Char);
496500
var pointee = new QualifiedType(builtin, new TypeQualifiers { IsConst = true });
497501
var pointer = new QualifiedType(new PointerType(pointee), new TypeQualifiers { IsConst = true });

src/Generator/Generators/C/CppTypePrinter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ private static string ConvertModifierToString(PointerType.TypeModifier modifier)
127127
public override TypePrinterResult VisitPointerType(PointerType pointer,
128128
TypeQualifiers quals)
129129
{
130+
if (FindTypeMap(pointer, out TypePrinterResult result))
131+
return result;
132+
130133
var pointeeType = pointer.Pointee.Visit(this, pointer.QualifiedPointee.Qualifiers);
131134
if (pointeeType.TypeMap != null)
132135
return pointeeType;

src/Generator/Generators/CLI/CLISources.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1218,7 +1218,7 @@ private ParamMarshal GenerateFunctionParamMarshal(Parameter param, int paramInde
12181218

12191219
if (isRef)
12201220
{
1221-
var typePrinter = new CppTypePrinter(Context);
1221+
var typePrinter = new CppTypePrinter(Context) { ResolveTypeMaps = false };
12221222
var type = paramType.Visit(typePrinter);
12231223

12241224
if (param.IsInOut)

0 commit comments

Comments
 (0)