Skip to content

Commit c264690

Browse files
committed
Fixed the generated C# when a constructor has a default parameter with type an external specialisation.
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent a96b2e2 commit c264690

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

src/Generator/Driver.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ public void SetupPasses(ILibrary library)
224224
{
225225
TranslationUnitPasses.AddPass(new GenerateSymbolsPass());
226226
TranslationUnitPasses.AddPass(new TrimSpecializationsPass());
227+
TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass());
227228
}
228229

229230
library.SetupPasses(this);

src/Generator/Passes/ConstructorToConversionOperatorPass.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ public class ConstructorToConversionOperatorPass : TranslationUnitPass
1212
{
1313
public override bool VisitMethodDecl(Method method)
1414
{
15-
if (AlreadyVisited(method) || !method.IsGenerated || !method.IsConstructor
16-
|| method.IsCopyConstructor
15+
if (AlreadyVisited(method) || !method.IsGenerated || !method.IsConstructor ||
16+
method.IsCopyConstructor ||
1717
// conversion operators can only be public
18-
|| method.Access != AccessSpecifier.Public)
18+
method.Access != AccessSpecifier.Public)
1919
return false;
2020

2121
var @params = method.Parameters.Where(p => p.Kind == ParameterKind.Regular).ToList();
@@ -29,7 +29,7 @@ public override bool VisitMethodDecl(Method method)
2929
(p.DefaultArgument.Declaration == null ||
3030
p.DefaultArgument.Declaration.Ignore)));
3131
if (nonDefaultParams > 1)
32-
return false;
32+
return false;
3333
}
3434
else
3535
{

tests/NamespacesDerived/NamespacesDerived.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ Abstract* Derived2::getAbstract()
6262
return 0;
6363
}
6464

65-
DerivedFromExternalSpecialization::DerivedFromExternalSpecialization()
65+
DerivedFromExternalSpecialization::DerivedFromExternalSpecialization(int i,
66+
TemplateWithIndependentFields<HasVirtualInDependency> defaultExternalSpecialization)
6667
{
6768
}
6869

tests/NamespacesDerived/NamespacesDerived.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ class DLL_API HasVirtualInDependency : public HasVirtualInCore
7474
class DLL_API DerivedFromExternalSpecialization : public TemplateWithIndependentFields<Derived>
7575
{
7676
public:
77-
DerivedFromExternalSpecialization();
77+
DerivedFromExternalSpecialization(int i,
78+
TemplateWithIndependentFields<HasVirtualInDependency> defaultExternalSpecialization =
79+
TemplateWithIndependentFields<HasVirtualInDependency>());
7880
~DerivedFromExternalSpecialization();
7981
TemplateWithIndependentFields<Base3> returnExternalSpecialization();
8082
};

0 commit comments

Comments
 (0)