Browse Source

Fixed the parsing of an undeclared template specialisation with an extension method.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1015/head
Dimitar Dobrev 9 years ago
parent
commit
35902635ff
  1. 3
      src/Generator/Passes/TrimSpecializationsPass.cs
  2. 1
      tests/CSharp/CSharpTemplates.h

3
src/Generator/Passes/TrimSpecializationsPass.cs

@ -92,7 +92,8 @@ namespace CppSharp.Passes
private void CleanSpecializations(Class template) private void CleanSpecializations(Class template)
{ {
template.Specializations.RemoveAll(s => template.Specializations.RemoveAll(s =>
!specializations.Contains(s) && !internalSpecializations.Contains(s)); s.SpecializationKind == TemplateSpecializationKind.Undeclared ||
(!specializations.Contains(s) && !internalSpecializations.Contains(s)));
foreach (var specialization in template.Specializations.Where( foreach (var specialization in template.Specializations.Where(
s => s is ClassTemplatePartialSpecialization)) s => s is ClassTemplatePartialSpecialization))

1
tests/CSharp/CSharpTemplates.h

@ -318,6 +318,7 @@ public:
T& operator[](const char* string); T& operator[](const char* string);
private: private:
T t[1]; T t[1];
HasDefaultTemplateArgument<char> h;
}; };
template <typename T> template <typename T>

Loading…
Cancel
Save