KirillOsenkov / RoslynQuoter

Roslyn tool that for a given C# program shows syntax tree API calls to construct its syntax tree
http://roslynquoter.azurewebsites.net
Apache License 2.0
918 stars 118 forks source link

Exception in RoslynQuoter: Can't pick a method to call for BinaryPattern #61

Closed bernd5 closed 3 years ago

bernd5 commented 3 years ago

Input-Code:

void Foo()
{
    object GetValue() => 47;
    var isTX = GetValue() is char and > 'H';
    System.Console.WriteLine(isTX);
}   

Foo();

Stacktrace:

Congratulations! You've found a bug in Quoter! Please open an issue at https://github.com/KirillOsenkov/RoslynQuoter/issues/new and paste the code you've typed above and this stack:System.Exception: Can't pick a method to call for BinaryPattern
   at RoslynQuoter.Quoter.InterpretMethodCall(Object instance, MethodCall methodCall) in D:\a\1\s\src\Quoter\Quoter.cs:line 1248
   at RoslynQuoter.Quoter.InterpretApiCall(ApiCall apiCall) in D:\a\1\s\src\Quoter\Quoter.cs:line 1197
   at RoslynQuoter.Quoter.Evaluate(ApiCall apiCall, Boolean normalizeWhitespace) in D:\a\1\s\src\Quoter\Quoter.cs:line 1162
   at RoslynQuoter.Quoter.AddModifyingCall(ApiCall apiCall, MethodCall methodCall) in D:\a\1\s\src\Quoter\Quoter.cs:line 1136
   at RoslynQuoter.Quoter.AddModifyingCalls(Object treeElement, ApiCall apiCall, List`1 values) in D:\a\1\s\src\Quoter\Quoter.cs:line 1117
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.Quote(Object treeElement, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 177
   at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuoteList(IEnumerable syntaxList, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 309
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.Quote(Object treeElement, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 177
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuoteList(IEnumerable syntaxList, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 309
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.QuotePropertyValue(SyntaxNode node, PropertyInfo property) in D:\a\1\s\src\Quoter\Quoter.cs:line 285
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at RoslynQuoter.Quoter.QuotePropertyValues(SyntaxNode node)
   at RoslynQuoter.Quoter.QuoteNode(SyntaxNode node, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 204
   at RoslynQuoter.Quoter.Quote(Object treeElement, String name) in D:\a\1\s\src\Quoter\Quoter.cs:line 177
   at RoslynQuoter.Quoter.Quote(SyntaxNode node) in D:\a\1\s\src\Quoter\Quoter.cs:line 145
   at RoslynQuoter.Quoter.QuoteText(String sourceText, NodeKind nodeKind) in D:\a\1\s\src\Quoter\Quoter.cs:line 82
   at QuoterService.Controllers.QuoterController.Post(QuoterRequestArgument arguments) in D:\a\1\s\src\Quoter.Web\Controllers\QuoterController.cs:line 81P.S. Sorry!
KirillOsenkov commented 3 years ago

Fixed, thanks for reporting.