Browse Source

Fixed the C++ type printer to handle const value types.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/696/head
Dimitar Dobrev 9 years ago
parent
commit
50ee414799
  1. 3
      src/AST/CppTypePrinter.cs
  2. 9
      src/Generator.Tests/AST/TestAST.cs
  3. 2
      tests/Native/AST.h

3
src/AST/CppTypePrinter.cs

@ -39,7 +39,8 @@ namespace CppSharp.AST @@ -39,7 +39,8 @@ namespace CppSharp.AST
public string VisitTagType(TagType tag, TypeQualifiers quals)
{
return tag.Declaration.Visit(this);
var qual = PrintTypeQualifiers && quals.IsConst ? "const " : string.Empty;
return string.Format("{0}{1}", qual, tag.Declaration.Visit(this));
}
public string VisitArrayType(ArrayType array, TypeQualifiers quals)

9
src/Generator.Tests/AST/TestAST.cs

@ -408,5 +408,14 @@ namespace CppSharp.Generator.Tests.AST @@ -408,5 +408,14 @@ namespace CppSharp.Generator.Tests.AST
Assert.That(template.Specializations[0].Constructors.First().QualifiedName,
Is.Not.EqualTo(template.Specializations[1].Constructors.First().QualifiedName));
}
[Test]
public void TestPrintingSpecializationWithConstValue()
{
var template = AstContext.FindDecl<ClassTemplate>("TestSpecializationArguments").First();
var cppTypePrinter = new CppTypePrinter { PrintScopeKind = CppTypePrintScopeKind.Qualified };
Assert.That(template.Specializations.Last().Visit(cppTypePrinter),
Is.EqualTo("TestSpecializationArguments<const TestASTEnumItemByName>"));
}
}
}

2
tests/Native/AST.h

@ -154,3 +154,5 @@ class ForwardedTemplate; @@ -154,3 +154,5 @@ class ForwardedTemplate;
typedef ForwardedTemplate<int> i;
typedef ForwardedTemplate<long> l;
template class TestSpecializationArguments<const TestASTEnumItemByName>;

Loading…
Cancel
Save