Skip to content

Commit 77185f1

Browse files
authored
Merge pull request #1055 from calumgrant/cs/lazy-type-mention
C#: Fix an InvalidOperationException in csharp.log
2 parents 300e3bd + fe4cdfd commit 77185f1

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void Populate()
5353
case SyntaxKind.GenericName:
5454
var gns = (GenericNameSyntax)Syntax;
5555
Emit(Loc ?? gns.Identifier.GetLocation(), Parent, Type);
56-
gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate();
56+
cx.PopulateLater(() => gns.TypeArgumentList.Arguments.Zip(Type.TypeMentions, (s, t) => Create(cx, s, this, t)).Enumerate());
5757
return;
5858
case SyntaxKind.QualifiedName:
5959
if (Type.ContainingType == null)

csharp/ql/test/library-tests/regressions/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,16 @@ partial class C1<T> where T: DynamicType
147147
{
148148
}
149149

150+
namespace NoPia
151+
{
152+
class EmbeddedTypesManager<
153+
TEmbeddedTypesManager,
154+
TEmbeddedType
155+
>
156+
where TEmbeddedTypesManager : EmbeddedTypesManager<TEmbeddedTypesManager, TEmbeddedType>
157+
where TEmbeddedType : EmbeddedTypesManager<TEmbeddedTypesManager, TEmbeddedType>
158+
{
159+
}
160+
}
161+
150162
// semmle-extractor-options: /r:System.Dynamic.Runtime.dll

csharp/ql/test/library-tests/regressions/TypeMentions.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,11 @@
6868
| Program.cs:142:30:142:40 | DynamicType |
6969
| Program.cs:146:27:146:27 | T |
7070
| Program.cs:146:30:146:40 | DynamicType |
71+
| Program.cs:156:15:156:35 | TEmbeddedTypesManager |
72+
| Program.cs:156:39:156:58 | EmbeddedTypesManager<,> |
73+
| Program.cs:156:60:156:80 | TEmbeddedTypesManager |
74+
| Program.cs:156:83:156:95 | TEmbeddedType |
75+
| Program.cs:157:15:157:27 | TEmbeddedType |
76+
| Program.cs:157:31:157:50 | EmbeddedTypesManager<,> |
77+
| Program.cs:157:52:157:72 | TEmbeddedTypesManager |
78+
| Program.cs:157:75:157:87 | TEmbeddedType |

0 commit comments

Comments
 (0)