tgjones/HlslTools

PrimitiveIndex causes unhandled exception from BindFunctionInvocationExpression

ngcg opened this issue · 6 comments

ngcg commented

VS 2019 (16.7.2), HlslTools 1.1.302

This looks similar to #203, but the stack trace is a bit different. It happens in a very large HLSL file, so I don't know what code exactly triggered it. Other files in the same project are ok.

This extension looks great otherwise - makes VS an actual IDE for HLSL, instead of a glorified notepad. Thanks for your work!

VS xml log event with some newlines added for readability:

    <type>Error</type>
    <source>Editor or Editor Extension</source>
    <description>System.AggregateException: One or more errors occurred. 
---&gt; System.AggregateException: One or more errors occurred. 
---&gt; System.InvalidOperationException: Sequence contains no elements&#x000D;&#x000A;
   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray, Func`2 predicate)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionInvocationExpression(FunctionInvocationExpressionSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindExpression(ExpressionSyntax node)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindEqualsValue(EqualsValueClauseSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindInitializer(InitializerSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarator(VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass24_0.&lt;BindVariableDeclaration&gt;b__1(VariableDeclaratorSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarationStatement(VariableDeclarationStatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindStatement(StatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__1(StatementSyntax y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__0(StatementSyntax x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindBlock(BlockSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass29_0.&lt;BindFunctionDefinition&gt;b__3(BlockSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionDefinition(FunctionDefinitionSyntax declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindGlobalDeclaration(SyntaxNode declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__1(SyntaxNode y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__0(SyntaxNode x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindTopLevelDeclarations(List`1 declarations, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindCompilationUnit(CompilationUnitSyntax compilationUnit)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindRoot(SyntaxNode syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind(SyntaxNode syntaxRoot, CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModel(Nullable`1 cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModelBase(CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Document.&lt;&gt;c__DisplayClass20_2.&lt;&lt;-ctor&gt;b__3&gt;d.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)&#x000D;&#x000A;   
--- End of inner exception stack trace 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Document.&lt;GetSemanticModelAsync&gt;d__28.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractSemanticQuickInfoProvider.&lt;BindTokenAsync&gt;d__3.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractSemanticQuickInfoProvider.&lt;BuildContentAsync&gt;d__0.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractQuickInfoProvider.&lt;GetQuickInfoItemAsync&gt;d__2.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractQuickInfoProvider.&lt;GetItemAsync&gt;d__0.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.QuickInfoService.&lt;GetQuickInfoAsync&gt;d__6.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Editor.Implementation.QuickInfo.QuickInfoSource.&lt;GetQuickInfoItemAsync&gt;d__3.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.&lt;ComputeSourceContentAsync&gt;d__39.MoveNext()&#x000D;&#x000A;   
--- End of inner exception stack trace 
---&#x000D;&#x000A;
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.&lt;UpdateAsync&gt;d__32.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoPresentationSession.&lt;UpdateAsync&gt;d__5.MoveNext()&#x000D;&#x000A;
---&gt; (Inner Exception #0) System.AggregateException: One or more errors occurred. 
---&gt; System.InvalidOperationException: Sequence contains no elements&#x000D;&#x000A;
   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray, Func`2 predicate)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionInvocationExpression(FunctionInvocationExpressionSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindExpression(ExpressionSyntax node)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindEqualsValue(EqualsValueClauseSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindInitializer(InitializerSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarator(VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass24_0.&lt;BindVariableDeclaration&gt;b__1(VariableDeclaratorSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarationStatement(VariableDeclarationStatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindStatement(StatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__1(StatementSyntax y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__0(StatementSyntax x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindBlock(BlockSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass29_0.&lt;BindFunctionDefinition&gt;b__3(BlockSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionDefinition(FunctionDefinitionSyntax declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindGlobalDeclaration(SyntaxNode declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__1(SyntaxNode y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__0(SyntaxNode x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindTopLevelDeclarations(List`1 declarations, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindCompilationUnit(CompilationUnitSyntax compilationUnit)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindRoot(SyntaxNode syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind(SyntaxNode syntaxRoot, CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModel(Nullable`1 cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModelBase(CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Document.&lt;&gt;c__DisplayClass20_2.&lt;&lt;-ctor&gt;b__3&gt;d.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)&#x000D;&#x000A;   
--- End of inner exception stack trace 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Document.&lt;GetSemanticModelAsync&gt;d__28.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractSemanticQuickInfoProvider.&lt;BindTokenAsync&gt;d__3.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractSemanticQuickInfoProvider.&lt;BuildContentAsync&gt;d__0.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractQuickInfoProvider.&lt;GetQuickInfoItemAsync&gt;d__2.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.AbstractQuickInfoProvider.&lt;GetItemAsync&gt;d__0.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.QuickInfo.QuickInfoService.&lt;GetQuickInfoAsync&gt;d__6.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Editor.Implementation.QuickInfo.QuickInfoSource.&lt;GetQuickInfoItemAsync&gt;d__3.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)&#x000D;&#x000A;
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&#x000D;&#x000A;
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.&lt;ComputeSourceContentAsync&gt;d__39.MoveNext()&#x000D;&#x000A;
---&gt; (Inner Exception #0) System.InvalidOperationException: Sequence contains no elements&#x000D;&#x000A;
   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray, Func`2 predicate)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionInvocationExpression(FunctionInvocationExpressionSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindExpression(ExpressionSyntax node)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindEqualsValue(EqualsValueClauseSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindInitializer(InitializerSyntax syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarator(VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass24_0.&lt;BindVariableDeclaration&gt;b__1(VariableDeclaratorSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent, Func`3 createSymbol)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclaration(VariableDeclarationSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindVariableDeclarationStatement(VariableDeclarationStatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindStatement(StatementSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__1(StatementSyntax y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass95_0.&lt;BindBlock&gt;b__0(StatementSyntax x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindBlock(BlockSyntax syntax, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass29_0.&lt;BindFunctionDefinition&gt;b__3(BlockSyntax x)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindFunctionDefinition(FunctionDefinitionSyntax declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindGlobalDeclaration(SyntaxNode declaration, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__1(SyntaxNode y)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.&lt;&gt;c__DisplayClass16_0.&lt;BindTopLevelDeclarations&gt;b__0(SyntaxNode x)&#x000D;&#x000A;
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()&#x000D;&#x000A;
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)&#x000D;&#x000A;
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)&#x000D;&#x000A;
   at System.Collections.Immutable.ImmutableArray.ToImmutableArray[TSource](IEnumerable`1 items)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindTopLevelDeclarations(List`1 declarations, Symbol parent)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindCompilationUnit(CompilationUnitSyntax compilationUnit)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.BindRoot(SyntaxNode syntax)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind[TInput,TResult](TInput node, Func`2 bindMethod)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Binding.Binder.Bind(SyntaxNode syntaxRoot, CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModel(Nullable`1 cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Hlsl.Compilation.Compilation.GetSemanticModelBase(CancellationToken cancellationToken)&#x000D;&#x000A;
   at ShaderTools.CodeAnalysis.Document.&lt;&gt;c__DisplayClass20_2.&lt;&lt;-ctor&gt;b__3&gt;d.MoveNext()&#x000D;&#x000A;
--- End of stack trace from previous location where exception was thrown 
---&#x000D;&#x000A;
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)&lt;
---&#x000D;&#x000A;&lt;
---&#x000D;&#x000A;</description>```
ngcg commented

Pfew, I was actually able to bisect it down to code in another included file:

// inside function, inside while loop
if (condition) {
	int local = (g_constants.foo >= 0 ? g_constants.foo : g_variables[PrimitiveIndex()]);
	// do stuff
}

where g_constants is ConstantBuffer<SomeStruct> ('b' register, CBV) and g_variables is Buffer<int> ('t' register, SRV).

Replacing PrimitiveIndex() with plain 0 avoids the exception. Extracting the index to a separate local (const) variable doesn't help.

Restructuring the code to this equivalent also doesn't help:

int local = g_constants.foo;
if (local < 0)
	local = g_variables[PrimitiveIndex()]);
ngcg commented

We have one other file that uses PrimitiveIndex similarly (stored in a local variable and then used with an array) - it too raises this exception. When I replace PrimitiveIndex() with 0 the extension parses all sources without raising exceptions, even though the total code length is way over 10K lines when accounting for includes. Interestingly other raytracing intrinsics like InstanceID() don't cause issues.

I can confirm that PrimitiveIndex() breaks the extension.

With PrimitiveIndex():

image

Without PrimitiveIndex(), more highlighting:

image

The cause of the error seems to be that "PrimitiveIndex" appears in IntrinsicFunctions.SM6.cs twice:

Removing the extra "PrimitiveIndex" block from IntrinsicFunctions.SM6.cs fixes the bug:

image

-->

image

When you re-build you'll find the .vsix here:

HlslTools-master\src\ShaderTools.Editor.VisualStudio\bin\Release

Thanks @ngcg for reporting this, and thanks @MattTree for the fix!