Skip to content

#region preprocessor directives not converted #15

@ViacheslavUKR

Description

@ViacheslavUKR

Sorry, my friend, this is very interesting project to me, because I write in rare lang VB.NET, but any call your converter induce error below. This is input C# code for call this issue ( from wordwide C# example "contoso university").

#define Final // or Intro

#if Intro
#region snippet_Intro
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;

namespace ContosoUniversity.Models
{
    public class Course
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int CourseID { get; set; }
        public string Title { get; set; }
        public int Credits { get; set; }

        public ICollection<Enrollment> Enrollments { get; set; }
    }
}
#endregion

#elif Final
#region snippet_Final
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace ContosoUniversity.Models
{
    public class Course
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Display(Name = "Number")]
        public int CourseID { get; set; }

        [StringLength(50, MinimumLength = 3)]
        public string Title { get; set; }

        [Range(0, 5)]
        public int Credits { get; set; }

        public int DepartmentID { get; set; }

        public Department Department { get; set; }
        public ICollection<Enrollment> Enrollments { get; set; }
        public ICollection<CourseAssignment> CourseAssignments { get; set; }
    }
}
#endregion
#endif


---------------------------
Microsoft Visual Studio
---------------------------
Convert C# to VB:

Selected C# code seems to have errors or to be incomplete:



----- Exception 1 of 1 -----

System.InvalidOperationException: Nullable object must have a value.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.ConvertAndSplitAttributes(SyntaxList`1 attributeLists, SyntaxList`1& attributes, SyntaxList`1& returnAttributes)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitPropertyDeclaration(PropertyDeclarationSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.PropertyDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitClassDeclaration>b__22_0(MemberDeclarationSyntax m)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitClassDeclaration(ClassDeclarationSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitNamespaceDeclaration>b__20_0(MemberDeclarationSyntax m)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NamespaceDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitCompilationUnit>b__14_1(MemberDeclarationSyntax m)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitCompilationUnit(CompilationUnitSyntax node)
   at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.Convert(CSharpSyntaxNode input, SemanticModel semanticModel, Document targetDocument)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.ConvertText(String text, MetadataReference[] references)


---------------------------
OK   
---------------------------

Also I start your project in source code and see a code line number with error. Please see below.

Error message:
----- Exception 1 of 1 -----

System.InvalidOperationException: Nullable object must have a value.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Nullable`1.get_Value()
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.ConvertAndSplitAttributes(SyntaxList`1 attributeLists, SyntaxList`1& attributes, SyntaxList`1& returnAttributes) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 523
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitPropertyDeclaration(PropertyDeclarationSyntax node) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 431
   at Microsoft.CodeAnalysis.CSharp.Syntax.PropertyDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitClassDeclaration>b__22_0(MemberDeclarationSyntax m) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 206
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitClassDeclaration(ClassDeclarationSyntax node) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 206
   at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitNamespaceDeclaration>b__20_0(MemberDeclarationSyntax m) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 180
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
   at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)
   at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 182
   at Microsoft.CodeAnalysis.CSharp.Syntax.NamespaceDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.<VisitCompilationUnit>b__14_1(MemberDeclarationSyntax m) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 118
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
   at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)
   at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.NodesVisitor.VisitCompilationUnit(CompilationUnitSyntax node) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\NodesVisitor.cs:line 118
   at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
   at ICSharpCode.CodeConverter.VB.CSharpConverter.Convert(CSharpSyntaxNode input, SemanticModel semanticModel, Document targetDocument) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\CSharpConverter.cs:line 33
   at ICSharpCode.CodeConverter.VB.CSharpConverter.ConvertText(String text, MetadataReference[] references) in F:\Projects\CodeConverter-master\ICSharpCode.CodeConverter\VB\CSharpConverter.cs:line 46

Metadata

Metadata

Labels

C# -> VBSpecific to C# -> VB conversionVB -> C#Specific to VB -> C# conversionhelp wantedoutput logic errorA bug where the converted output behaves differently to the input code

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions