Merge pull request #1055 from calumgrant/cs/lazy-type-mention

C#: Fix an InvalidOperationException in csharp.log
This commit is contained in:
Tom Hvitved
2019-03-08 14:17:51 +01:00
committed by GitHub
3 changed files with 21 additions and 1 deletions

View File

@@ -53,7 +53,7 @@ namespace Semmle.Extraction.CSharp.Entities
case SyntaxKind.GenericName:
var gns = (GenericNameSyntax)Syntax;
Emit(Loc ?? gns.Identifier.GetLocation(), Parent, Type);
gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate();
cx.PopulateLater(() => gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate());
return;
case SyntaxKind.QualifiedName:
if (Type.ContainingType == null)

View File

@@ -147,4 +147,16 @@ partial class C1<T> where T: DynamicType
{
}
namespace NoPia
{
class EmbeddedTypesManager<
TEmbeddedTypesManager,
TEmbeddedType
>
where TEmbeddedTypesManager : EmbeddedTypesManager<TEmbeddedTypesManager, TEmbeddedType>
where TEmbeddedType : EmbeddedTypesManager<TEmbeddedTypesManager, TEmbeddedType>
{
}
}
// semmle-extractor-options: /r:System.Dynamic.Runtime.dll

View File

@@ -68,3 +68,11 @@
| Program.cs:142:30:142:40 | DynamicType |
| Program.cs:146:27:146:27 | T |
| Program.cs:146:30:146:40 | DynamicType |
| Program.cs:156:15:156:35 | TEmbeddedTypesManager |
| Program.cs:156:39:156:58 | EmbeddedTypesManager<,> |
| Program.cs:156:60:156:80 | TEmbeddedTypesManager |
| Program.cs:156:83:156:95 | TEmbeddedType |
| Program.cs:157:15:157:27 | TEmbeddedType |
| Program.cs:157:31:157:50 | EmbeddedTypesManager<,> |
| Program.cs:157:52:157:72 | TEmbeddedTypesManager |
| Program.cs:157:75:157:87 | TEmbeddedType |