Browse Source

Fix SymbolCodeGenerator printing typed enums as normal typeless integers

dev
josetr 3 years ago
parent
commit
6a414f37c3
  1. 6
      src/CppParser/Parser.cpp
  2. 2
      src/Generator/Passes/SymbolsCodeGenerator.cs

6
src/CppParser/Parser.cpp

@ -1537,6 +1537,12 @@ Parser::WalkTemplateArgument(const clang::TemplateArgument& TA, @@ -1537,6 +1537,12 @@ Parser::WalkTemplateArgument(const clang::TemplateArgument& TA,
case clang::TemplateArgument::Integral:
Arg.kind = CppSharp::CppParser::TemplateArgument::ArgumentKind::Integral;
//Arg.Type = WalkType(TA.getIntegralType(), 0);
{
clang::TypeLoc ArgTL;
if (ArgLoc && ArgLoc->getTypeSourceInfo())
ArgTL = ArgLoc->getTypeSourceInfo()->getTypeLoc();
Arg.type = GetQualifiedType(TA.getIntegralType(), &ArgTL);
}
Arg.integral = TA.getAsIntegral().getLimitedValue();
break;
case clang::TemplateArgument::Template:

2
src/Generator/Passes/SymbolsCodeGenerator.cs

@ -307,7 +307,7 @@ namespace CppSharp.Passes @@ -307,7 +307,7 @@ namespace CppSharp.Passes
case TemplateArgument.ArgumentKind.Declaration:
return a.Declaration.Visit(cppTypePrinter).ToString();
case TemplateArgument.ArgumentKind.Integral:
return a.Integral.ToString(CultureInfo.InvariantCulture);
return ("(" + a.Type.Visit(cppTypePrinter) + ")") + a.Integral.ToString(CultureInfo.InvariantCulture);
}
throw new System.ArgumentOutOfRangeException(
nameof(a.Kind), a.Kind, "Unsupported kind of template argument.");

Loading…
Cancel
Save