Browse Source

Fixed the C++ printing of qualified specializations.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/816/head
Dimitar Dobrev 8 years ago
parent
commit
71c14cdb2b
  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

@ -183,7 +183,8 @@ namespace CppSharp.AST @@ -183,7 +183,8 @@ namespace CppSharp.AST
if (specialization == null)
return string.Empty;
return VisitClassTemplateSpecializationDecl(specialization);
var qual = GetStringQuals(quals);
return $@"{qual}{VisitClassTemplateSpecializationDecl(specialization)}";
}
public virtual string VisitDependentTemplateSpecializationType(

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

@ -504,5 +504,14 @@ namespace CppSharp.Generator.Tests.AST @@ -504,5 +504,14 @@ namespace CppSharp.Generator.Tests.AST
Assert.That(template.Specializations[1].Classes[0].Visit(cppTypePrinter),
Is.EqualTo("TestTemplateClass<Math::Complex>::NestedInTemplate"));
}
[Test]
public void TestPrintQualifiedSpecialization()
{
var functionWithSpecializationArg = AstContext.FindFunction("functionWithSpecializationArg").First();
var cppTypePrinter = new CppTypePrinter { PrintScopeKind = TypePrintScopeKind.Qualified };
Assert.That(functionWithSpecializationArg.Parameters[0].Visit(cppTypePrinter),
Is.EqualTo("const TestTemplateClass<int>"));
}
}
}

2
tests/Native/AST.h

@ -169,3 +169,5 @@ bool functionWithSpecInfo(const T1& t11, const T1& t12, const T2& t2); @@ -169,3 +169,5 @@ bool functionWithSpecInfo(const T1& t11, const T1& t12, const T2& t2);
template<>
bool functionWithSpecInfo(const float& t11, const float& t12, const float& t2);
void functionWithSpecializationArg(const TestTemplateClass<int>);

Loading…
Cancel
Save