jamescourtney / FlatSharp

Fast, idiomatic C# implementation of Flatbuffers
Apache License 2.0
497 stars 50 forks source link

Internal Null reference exception on models that work with flatc.exe #299

Closed shadowbane1000 closed 2 years ago

shadowbane1000 commented 2 years ago

Hi.

I have a very complicated schema represented in fbs files that works correctly when built with flatc. However, I get a Null Reference Exception when building with FlatSharp.Compiler.

The error message is quite long due to the complexity of the fbs file. Sorry for that. If I get time, I will try to work out a simplified example of an fbs that causes the error as I cannot submit the real fbs file. Hopefully the callstack will provide a clue.

System.NullReferenceException: Object reference not set to an instance of an object. at FlatSharp.TypeModel.NullableTypeModel.get_PhysicalLayout() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\NullableTypeModel.cs:line 43 at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 178 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at System.Linq.Enumerable.SelectArrayIterator2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at FlatSharp.TypeModel.UnionTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\UnionTypeModel.cs:line 266 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.NullableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\NullableTypeModel.cs:line 107 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at System.Linq.Enumerable.SelectArrayIterator2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.UnionTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\UnionTypeModel.cs:line 266 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.Compiler.CloneMethodsGenerator.GenerateCloneMethodsForAssembly(CodeWriter writer, CompilerOptions options, Assembly assembly, TypeModelContainer container) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\CloneMethodsGenerator.cs:line 47 at FlatSharp.Compiler.SchemaModel.RootModel.WriteCode(CodeWriter writer, CompileContext context) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\SchemaModel\RootModel.cs:line 92 at FlatSharp.Compiler.FlatSharpCompiler.CreateCSharp(Byte[] bfbs, String inputHash, CompilerOptions options, String& csharp) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 462 at FlatSharp.Compiler.FlatSharpCompiler.RunCompiler(CompilerOptions options) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 108 at FlatSharp.Compiler.FlatSharpCompiler.<>c__DisplayClass3_0.<Main>b__0(CompilerOptions x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 46 at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action) at FlatSharp.Compiler.FlatSharpCompiler.Main(String[] args) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 43 Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at FlatSharp.TypeModel.NullableTypeModel.get_PhysicalLayout() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\NullableTypeModel.cs:line 43 at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 178 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at System.Linq.Enumerable.SelectArrayIterator2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at FlatSharp.TypeModel.UnionTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\UnionTypeModel.cs:line 266 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.NullableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\NullableTypeModel.cs:line 107 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at System.Linq.Enumerable.SelectArrayIterator2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.UnionTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\UnionTypeModel.cs:line 266 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.<Initialize>b__43_2(<>f__AnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.BaseVectorTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\Vectors\BaseVectorTypeModel.cs:line 211 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 136 at FlatSharp.TypeModel.TypeModelContainer.CreateTypeModel(Type type) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 280 at FlatSharp.TypeModel.TableTypeModel.b43_2(<>fAnonymousType02 x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 147 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.ToList() at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at FlatSharp.TypeModel.TableTypeModel.Initialize() in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TableTypeModel.cs:line 140 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModelImpl(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 252 at FlatSharp.TypeModel.TypeModelContainer.TryCreateTypeModel(Type type, Boolean throwOnError, ITypeModel& typeModel) in D:\a\FlatSharp\FlatSharp\src\FlatSharp\TypeModel\TypeModelContainer.cs:line 173 at FlatSharp.Compiler.CloneMethodsGenerator.GenerateCloneMethodsForAssembly(CodeWriter writer, CompilerOptions options, Assembly assembly, TypeModelContainer container) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\CloneMethodsGenerator.cs:line 47 at FlatSharp.Compiler.SchemaModel.RootModel.WriteCode(CodeWriter writer, CompileContext context) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\SchemaModel\RootModel.cs:line 92 at FlatSharp.Compiler.FlatSharpCompiler.CreateCSharp(Byte[] bfbs, String inputHash, CompilerOptions options, String& csharp) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 462 at FlatSharp.Compiler.FlatSharpCompiler.RunCompiler(CompilerOptions options) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 108 at FlatSharp.Compiler.FlatSharpCompiler.<>c__DisplayClass3_0.<Main>b__0(CompilerOptions x) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 46 at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action) at FlatSharp.Compiler.FlatSharpCompiler.Main(String[] args) in D:\a\FlatSharp\FlatSharp\src\FlatSharp.Compiler\FlatSharpCompiler.cs:line 43

shadowbane1000 commented 2 years ago

Below is the schema that I came up to cause this issue. Almost any change prevents the issue. Moving everything in "namespace a" (including the namespace declaration) under "namespace b" produces an error that a.UnionA is not defined, which is also incorrect (it's just defined after it's used).

` namespace a; union UnionA { TableA, }

table TableA { union_a: UnionA; }

namespace b;

union UnionB { TableB, }

table TableB { junk: byte; }

table TableThatStartsItAll { union_a: a.UnionA; union_b: UnionB; } `

jamescourtney commented 2 years ago

Thanks for the level of detail here. I'll take a look this weekend. Can you also share the version of FlatSharp that you are using? I'll assume 6.3.1 for now.

shadowbane1000 commented 2 years ago

Yes. It's 6.3.1

jamescourtney commented 2 years ago

You should be able to work around this error by adding the required attribute on your union member:

namespace a;
union UnionA {
    TableA,
}

table TableA {
    union_a: UnionA (required);
}

namespace b;

table TableThatStartsItAll {
    union_a: a.UnionA (required);
}

The problem stems from the fact that UnionA is an optional (ie, nullable) field on these tables, which leads FlatSharp to not initialize the circular chain of dependencies correctly. I'll be working on a fix, but it's my hope that this at least unblocks you.

jamescourtney commented 2 years ago

Addressed in #300, which should be published on NuGet sometime this week after I get some confidence with it.

shadowbane1000 commented 2 years ago

Thanks for your quick attention to this. The workaround is working for me.

jamescourtney commented 2 years ago

The fix for this is published in 6.3.2. Please let me know how it works for you!