Skip to content

ArgumentOutOfRangeException bug at MatchParamNamesWithInstantiatedFromPass #1640

@AhmedZero

Description

@AhmedZero
Brief Description

I need to create a wrapper for oofem ( https://github.com/oofem/oofem/ ) for C# in Windows, I use the libraries and headers.
the problem with Templates like floatmatrixf.h (https://github.com/oofem/oofem/blob/master/src/oofemlib/floatmatrixf.h) and floatarrayf.h (https://github.com/oofem/oofem/blob/master/src/oofemlib/floatarrayf.h)

                driver.Options.GenerateDefaultValuesForArguments = true;
                driver.Options.GenerateClassTemplates = true;
                driver.ParserOptions.EnableRTTI = true;
                driver.Options.GeneratorKind = GeneratorKind.CSharp;
                driver.ParserOptions.LanguageVersion = CppSharp.Parser.LanguageVersion.CPP14;
                driver.ParserOptions.UnityBuild = true;
                driver.ParserOptions.AddArguments("-fcxx-exceptions");
                driver.ParserOptions.AddArguments("-fexceptions");
                driver.Options.OutputDir = $@"{thedirectory}\oofem\CSharp";
                driver.ParserOptions.SetupMSVC(VisualStudioVersion.Latest);
                var module = driver.Options.AddModule("oofem");
                module.LibraryDirs.Add($@"{thedirectory}\oofem\build\Debug");
                module.Libraries.Add("oofem.lib");
                module.IncludeDirs.Add($@"{thedirectory}\oofem\Build");
                module.IncludeDirs.Add($@"{thedirectory}\oofem\src\oofemlib");
                module.IncludeDirs.Add($@"{thedirectory}\oofem\src\sm");

                module.Headers.Add(@"engngm.h");
                module.Headers.Add(@"util.h");
                module.Headers.Add(@"domain.h");
                module.Headers.Add(@"floatarray.h");
                //module.Headers.Add(@"floatarrayf.h");

                module.Headers.Add(@"floatmatrix.h");
                module.Headers.Add(@"floatmatrixf.h");

OS: Windows 11 (dotnet 5.0, last commit of CPPSharp)

Used headers

https://github.com/oofem/oofem/tree/master/src/oofemlib
https://github.com/oofem/oofem/tree/master/src/sm

Used settings

Target: C#

Stack trace or incompilable generated code
Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at CppSharp.Passes.MatchParamNamesWithInstantiatedFromPass.VisitFunctionDecl(Function function) in M:\My_Projects\CppSharp\src\Generator\Passes\MatchParamNamesWithInstantiatedFromPass.cs:line 23
   at CppSharp.AST.AstVisitor.VisitMethodDecl(Method method) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 475
   at CppSharp.AST.AstVisitor.VisitClassDecl(Class class) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 407
   at CppSharp.AST.AstVisitor.VisitClassTemplateSpecializationDecl(ClassTemplateSpecialization specialization) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 566
   at CppSharp.AST.AstVisitor.VisitClassDecl(Class class) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 416
   at CppSharp.AST.Class.Visit[T](IDeclVisitor`1 visitor) in M:\My_Projects\CppSharp\src\AST\Class.cs:line 291
   at CppSharp.AST.AstVisitor.VisitDeclarationContext(DeclarationContext context) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 627
   at CppSharp.AST.AstVisitor.VisitNamespace(Namespace namespace) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 618
   at CppSharp.AST.Namespace.Visit[T](IDeclVisitor`1 visitor) in M:\My_Projects\CppSharp\src\AST\Namespace.cs:line 388
   at CppSharp.AST.AstVisitor.VisitDeclarationContext(DeclarationContext context) in M:\My_Projects\CppSharp\src\AST\ASTVisitor.cs:line 653
   at CppSharp.Passes.TranslationUnitPass.VisitTranslationUnit(TranslationUnit unit) in M:\My_Projects\CppSharp\src\Generator\Passes\Pass.cs:line 37
   at CppSharp.Passes.TranslationUnitPass.VisitASTContext(ASTContext context) in M:\My_Projects\CppSharp\src\Generator\Passes\Pass.cs:line 24
   at CppSharp.Generators.BindingContext.<RunPasses>b__37_0(TranslationUnitPass pass) in M:\My_Projects\CppSharp\src\Generator\BindingContext.cs:line 45
   at CppSharp.PassBuilder`1.RunPasses(Action`1 action) in M:\My_Projects\CppSharp\src\Generator\Passes\PassBuilder.cs:line 57
   at CppSharp.Generators.BindingContext.RunPasses() in M:\My_Projects\CppSharp\src\Generator\BindingContext.cs:line 39
   at CppSharp.Driver.ProcessCode() in M:\My_Projects\CppSharp\src\Generator\Driver.cs:line 308
   at CppSharp.ConsoleDriver.Run(ILibrary library) in M:\My_Projects\CppSharp\src\Generator\Driver.cs:line 451
   at WrapGlobal.Program.Main(String[] args) in M:\My_Projects\WrapGlobal\WrapGlobal\Program.cs:line 116

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions