Browse Source

Fixed a case of default arguments which use nullptr.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/658/head
Dimitar Dobrev 9 years ago
parent
commit
0798c5428c
  1. 4
      src/CppParser/Parser.cpp
  2. 1
      tests/CSharp/CSharp.Tests.cs
  3. 4
      tests/CSharp/CSharp.cpp
  4. 1
      tests/CSharp/CSharp.h

4
src/CppParser/Parser.cpp

@ -2785,7 +2785,9 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr) @@ -2785,7 +2785,9 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr)
{
auto SubTemporaryExpr = TemporaryExpr->GetTemporaryExpr();
auto Cast = dyn_cast<CastExpr>(SubTemporaryExpr);
if (!Cast || Cast->getSubExprAsWritten()->getStmtClass() != Stmt::IntegerLiteralClass)
if (!Cast ||
(Cast->getSubExprAsWritten()->getStmtClass() != Stmt::IntegerLiteralClass &&
Cast->getSubExprAsWritten()->getStmtClass() != Stmt::CXXNullPtrLiteralExprClass))
return WalkExpression(SubTemporaryExpr);
return new AST::CXXConstructExpr(GetStringFromStatement(Expr),
WalkDeclaration(ConstructorExpr->getConstructor()));

1
tests/CSharp/CSharp.Tests.cs

@ -191,6 +191,7 @@ public class CSharpTests : GeneratorTestFixture @@ -191,6 +191,7 @@ public class CSharpTests : GeneratorTestFixture
methodsWithDefaultValues.DefaultEnumAssignedBitwiseOr();
methodsWithDefaultValues.DefaultEnumAssignedBitwiseOrShort();
methodsWithDefaultValues.DefaultNonEmptyCtor();
methodsWithDefaultValues.DefaultNonEmptyCtorWithNullPtr();
methodsWithDefaultValues.DefaultMappedToEnum();
methodsWithDefaultValues.DefaultMappedToZeroEnum();
methodsWithDefaultValues.DefaultMappedToEnumAssignedWithCtor();

4
tests/CSharp/CSharp.cpp

@ -447,6 +447,10 @@ void MethodsWithDefaultValues::defaultNonEmptyCtor(QGenericArgument arg) @@ -447,6 +447,10 @@ void MethodsWithDefaultValues::defaultNonEmptyCtor(QGenericArgument arg)
{
}
void MethodsWithDefaultValues::defaultNonEmptyCtorWithNullPtr(QGenericArgument arg)
{
}
void MethodsWithDefaultValues::defaultMappedToEnum(QFlags<Flags> qFlags)
{
}

1
tests/CSharp/CSharp.h

@ -356,6 +356,7 @@ public: @@ -356,6 +356,7 @@ public:
void defaultEnumAssignedBitwiseOr(Flags flags = Flags::Flag1 | Flags::Flag2);
void defaultEnumAssignedBitwiseOrShort(UntypedFlags flags = Flag1 | Flag2);
void defaultNonEmptyCtor(QGenericArgument arg = QGenericArgument(0));
void defaultNonEmptyCtorWithNullPtr(QGenericArgument arg = QGenericArgument(nullptr));
void defaultMappedToEnum(QFlags<Flags> qFlags = Flags::Flag1);
void defaultMappedToZeroEnum(QFlags<Flags> qFlags = 0);
void defaultMappedToEnumAssignedWithCtor(QFlags<Flags> qFlags = QFlags<Flags>());

Loading…
Cancel
Save