From 6cf3ca49e455d713c75689dbfaa3bd296650b71d Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Fri, 30 Oct 2020 13:36:38 +0100 Subject: [PATCH 1/5] C#: Extract 'ImplicitObjectCreationExpressionSyntax' --- .../Entities/Expressions/Factory.cs | 5 +- .../Entities/Expressions/ObjectCreation.cs | 137 ------------------ .../ObjectCreation/AnonymousObjectCreation.cs | 50 +++++++ .../ObjectCreation/BaseObjectCreation.cs | 75 ++++++++++ .../ObjectCreation/ExplicitObjectCreation.cs | 20 +++ .../ObjectCreation/ImplicitObjectCreation.cs | 19 +++ .../Semmle.Extraction.CSharp/Tuples.cs | 5 + .../src/semmle/code/csharp/exprs/Creation.qll | 6 + csharp/ql/src/semmlecode.csharp.dbscheme | 5 + .../csharp9/AnonymousObjectCreation.cs | 22 +++ .../csharp9/AnonymousObjectCreation.expected | 6 + .../csharp9/AnonymousObjectCreation.ql | 9 ++ .../library-tests/csharp9/PrintAst.expected | 47 ++++++ csharp/upgrades/TO_CHANGE/upgrade.properties | 2 + 14 files changed, 270 insertions(+), 138 deletions(-) delete mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation.cs create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/BaseObjectCreation.cs create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ExplicitObjectCreation.cs create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ImplicitObjectCreation.cs create mode 100644 csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs create mode 100644 csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected create mode 100644 csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.ql create mode 100644 csharp/upgrades/TO_CHANGE/upgrade.properties diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Factory.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Factory.cs index 889dbfd378b..a21379d897c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Factory.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Factory.cs @@ -84,6 +84,9 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions case SyntaxKind.ObjectCreationExpression: return ExplicitObjectCreation.Create(info); + case SyntaxKind.ImplicitObjectCreationExpression: + return ImplicitObjectCreation.Create(info); + case SyntaxKind.ArrayCreationExpression: return NormalArrayCreation.Create(info); @@ -179,7 +182,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions return ImplicitArrayCreation.Create(info); case SyntaxKind.AnonymousObjectCreationExpression: - return ImplicitObjectCreation.Create(info); + return AnonymousObjectCreation.Create(info); case SyntaxKind.ComplexElementInitializerExpression: return CollectionInitializer.Create(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation.cs deleted file mode 100644 index ae3d0f10506..00000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation.cs +++ /dev/null @@ -1,137 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Semmle.Extraction.Entities; -using Semmle.Extraction.Kinds; -using System.IO; -using System.Linq; - -namespace Semmle.Extraction.CSharp.Entities.Expressions -{ - internal abstract class ObjectCreation : Expression - where TExpressionSyntax : ExpressionSyntax - { - protected ObjectCreation(ExpressionNodeInfo info) - : base(info) { } - } - - // new Foo(...) { ... }. - internal class ExplicitObjectCreation : ObjectCreation - { - private static bool IsDynamicObjectCreation(Context cx, ObjectCreationExpressionSyntax node) - { - return node.ArgumentList != null && node.ArgumentList.Arguments.Any(arg => IsDynamic(cx, arg.Expression)); - } - - private static ExprKind GetKind(Context cx, ObjectCreationExpressionSyntax node) - { - var si = cx.GetModel(node).GetSymbolInfo(node.Type); - return Entities.Type.IsDelegate(si.Symbol as INamedTypeSymbol) ? ExprKind.EXPLICIT_DELEGATE_CREATION : ExprKind.OBJECT_CREATION; - } - - private ExplicitObjectCreation(ExpressionNodeInfo info) - : base(info.SetKind(GetKind(info.Context, (ObjectCreationExpressionSyntax)info.Node))) { } - - public static Expression Create(ExpressionNodeInfo info) => new ExplicitObjectCreation(info).TryPopulate(); - - protected override void PopulateExpression(TextWriter trapFile) - { - if (Syntax.ArgumentList != null) - { - PopulateArguments(trapFile, Syntax.ArgumentList, 0); - } - - var target = cx.GetModel(Syntax).GetSymbolInfo(Syntax); - var method = (IMethodSymbol)target.Symbol; - - if (method != null) - { - trapFile.expr_call(this, Method.Create(cx, method)); - } - - if (IsDynamicObjectCreation(cx, Syntax)) - { - var name = GetDynamicName(Syntax.Type); - if (name.HasValue) - trapFile.dynamic_member_name(this, name.Value.Text); - else - cx.ModelError(Syntax, "Unable to get name for dynamic object creation."); - } - - if (Syntax.Initializer != null) - { - switch (Syntax.Initializer.Kind()) - { - case SyntaxKind.CollectionInitializerExpression: - CollectionInitializer.Create(new ExpressionNodeInfo(cx, Syntax.Initializer, this, -1) { Type = Type }); - break; - case SyntaxKind.ObjectInitializerExpression: - ObjectInitializer.Create(new ExpressionNodeInfo(cx, Syntax.Initializer, this, -1) { Type = Type }); - break; - default: - cx.ModelError("Unhandled initializer in object creation"); - break; - } - } - - TypeMention.Create(cx, Syntax.Type, this, Type); - } - - private static SyntaxToken? GetDynamicName(CSharpSyntaxNode name) - { - switch (name.Kind()) - { - case SyntaxKind.IdentifierName: - return ((IdentifierNameSyntax)name).Identifier; - case SyntaxKind.GenericName: - return ((GenericNameSyntax)name).Identifier; - case SyntaxKind.QualifiedName: - // We ignore any qualifiers, for now - return GetDynamicName(((QualifiedNameSyntax)name).Right); - default: - return null; - } - } - } - - internal class ImplicitObjectCreation : ObjectCreation - { - public ImplicitObjectCreation(ExpressionNodeInfo info) - : base(info.SetKind(ExprKind.OBJECT_CREATION)) { } - - public static Expression Create(ExpressionNodeInfo info) => - new ImplicitObjectCreation(info).TryPopulate(); - - protected override void PopulateExpression(TextWriter trapFile) - { - var target = cx.GetSymbolInfo(Syntax); - var method = (IMethodSymbol)target.Symbol; - - if (method != null) - { - trapFile.expr_call(this, Method.Create(cx, method)); - } - var child = 0; - - var objectInitializer = Syntax.Initializers.Any() ? - new Expression(new ExpressionInfo(cx, Type, Location, ExprKind.OBJECT_INIT, this, -1, false, null)) : - null; - - foreach (var init in Syntax.Initializers) - { - // Create an "assignment" - var property = cx.GetModel(init).GetDeclaredSymbol(init); - var propEntity = Property.Create(cx, property); - var type = Entities.Type.Create(cx, property.GetAnnotatedType()); - var loc = cx.Create(init.GetLocation()); - - var assignment = new Expression(new ExpressionInfo(cx, type, loc, ExprKind.SIMPLE_ASSIGN, objectInitializer, child++, false, null)); - Create(cx, init.Expression, assignment, 0); - Property.Create(cx, property); - - var access = new Expression(new ExpressionInfo(cx, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 1, false, null)); - trapFile.expr_access(access, propEntity); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs new file mode 100644 index 00000000000..718217bb720 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs @@ -0,0 +1,50 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Semmle.Extraction.Entities; +using Semmle.Extraction.Kinds; +using System.IO; + +namespace Semmle.Extraction.CSharp.Entities.Expressions +{ + internal class AnonymousObjectCreation : Expression + { + public AnonymousObjectCreation(ExpressionNodeInfo info) + : base(info.SetKind(ExprKind.OBJECT_CREATION)) { } + + public static Expression Create(ExpressionNodeInfo info) => + new AnonymousObjectCreation(info).TryPopulate(); + + protected override void PopulateExpression(TextWriter trapFile) + { + var target = cx.GetSymbolInfo(Syntax); + var method = (IMethodSymbol)target.Symbol; + + if (method != null) + { + trapFile.expr_call(this, Method.Create(cx, method)); + } + var child = 0; + + var objectInitializer = Syntax.Initializers.Any() ? + new Expression(new ExpressionInfo(cx, Type, Location, ExprKind.OBJECT_INIT, this, -1, false, null)) : + null; + + foreach (var init in Syntax.Initializers) + { + // Create an "assignment" + var property = cx.GetModel(init).GetDeclaredSymbol(init); + var propEntity = Property.Create(cx, property); + var type = Entities.Type.Create(cx, property.GetAnnotatedType()); + var loc = cx.Create(init.GetLocation()); + + var assignment = new Expression(new ExpressionInfo(cx, type, loc, ExprKind.SIMPLE_ASSIGN, objectInitializer, child++, false, null)); + Create(cx, init.Expression, assignment, 0); + Property.Create(cx, property); + + var access = new Expression(new ExpressionInfo(cx, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 1, false, null)); + trapFile.expr_access(access, propEntity); + } + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/BaseObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/BaseObjectCreation.cs new file mode 100644 index 00000000000..82b9899598d --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/BaseObjectCreation.cs @@ -0,0 +1,75 @@ +using System.IO; +using System.Linq; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Semmle.Extraction.Kinds; + +namespace Semmle.Extraction.CSharp.Entities.Expressions +{ + internal abstract class BaseObjectCreation : Expression + where TExpressionSyntax : BaseObjectCreationExpressionSyntax + { + protected BaseObjectCreation(ExpressionNodeInfo info) + : base(info.SetKind(GetKind(info.Context, (BaseObjectCreationExpressionSyntax)info.Node))) + { + } + + protected override void PopulateExpression(TextWriter trapFile) + { + if (Syntax.ArgumentList != null) + { + PopulateArguments(trapFile, Syntax.ArgumentList, 0); + } + + var target = cx.GetModel(Syntax).GetSymbolInfo(Syntax); + if (target.Symbol is IMethodSymbol method) + { + trapFile.expr_call(this, Method.Create(cx, method)); + } + + if (IsDynamicObjectCreation(cx, Syntax)) + { + if (cx.GetModel(Syntax).GetTypeInfo(Syntax).Type is INamedTypeSymbol type && + !string.IsNullOrEmpty(type.Name)) + { + trapFile.dynamic_member_name(this, type.Name); + } + else + { + cx.ModelError(Syntax, "Unable to get name for dynamic object creation."); + } + } + + if (Syntax.Initializer != null) + { + switch (Syntax.Initializer.Kind()) + { + case SyntaxKind.CollectionInitializerExpression: + CollectionInitializer.Create(new ExpressionNodeInfo(cx, Syntax.Initializer, this, -1) { Type = Type }); + break; + case SyntaxKind.ObjectInitializerExpression: + ObjectInitializer.Create(new ExpressionNodeInfo(cx, Syntax.Initializer, this, -1) { Type = Type }); + break; + default: + cx.ModelError("Unhandled initializer in object creation"); + break; + } + } + } + + private static ExprKind GetKind(Context cx, BaseObjectCreationExpressionSyntax node) + { + var type = cx.GetModel(node).GetTypeInfo(node).Type; + return Entities.Type.IsDelegate(type as INamedTypeSymbol) + ? ExprKind.EXPLICIT_DELEGATE_CREATION + : ExprKind.OBJECT_CREATION; + } + + private static bool IsDynamicObjectCreation(Context cx, BaseObjectCreationExpressionSyntax node) + { + return node.ArgumentList != null && + node.ArgumentList.Arguments.Any(arg => IsDynamic(cx, arg.Expression)); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ExplicitObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ExplicitObjectCreation.cs new file mode 100644 index 00000000000..51b2db20a9e --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ExplicitObjectCreation.cs @@ -0,0 +1,20 @@ +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System.IO; + +namespace Semmle.Extraction.CSharp.Entities.Expressions +{ + // new Foo(...) { ... }. + internal class ExplicitObjectCreation : BaseObjectCreation + { + private ExplicitObjectCreation(ExpressionNodeInfo info) : base(info) { } + + public static Expression Create(ExpressionNodeInfo info) => new ExplicitObjectCreation(info).TryPopulate(); + + protected override void PopulateExpression(TextWriter trapFile) + { + base.PopulateExpression(trapFile); + + TypeMention.Create(cx, Syntax.Type, this, Type); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ImplicitObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ImplicitObjectCreation.cs new file mode 100644 index 00000000000..2cc49d2d542 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/ImplicitObjectCreation.cs @@ -0,0 +1,19 @@ +using System.IO; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +namespace Semmle.Extraction.CSharp.Entities.Expressions +{ + internal class ImplicitObjectCreation : BaseObjectCreation + { + private ImplicitObjectCreation(ExpressionNodeInfo info) : base(info) { } + + public static Expression Create(ExpressionNodeInfo info) => new ImplicitObjectCreation(info).TryPopulate(); + + protected override void PopulateExpression(TextWriter trapFile) + { + base.PopulateExpression(trapFile); + + trapFile.implicitly_typed_object_creation(this); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs index b3eb2da999a..0e969e3d112 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs @@ -301,6 +301,11 @@ namespace Semmle.Extraction.CSharp trapFile.WriteTuple("implicitly_typed_array_creation", array); } + internal static void implicitly_typed_object_creation(this TextWriter trapFile, Expression expression) + { + trapFile.WriteTuple("implicitly_typed_object_creation", expression); + } + internal static void indexer_location(this TextWriter trapFile, Indexer indexer, Location location) { trapFile.WriteTuple("indexer_location", indexer, location); diff --git a/csharp/ql/src/semmle/code/csharp/exprs/Creation.qll b/csharp/ql/src/semmle/code/csharp/exprs/Creation.qll index bde4f4a319d..c9ae3919004 100644 --- a/csharp/ql/src/semmle/code/csharp/exprs/Creation.qll +++ b/csharp/ql/src/semmle/code/csharp/exprs/Creation.qll @@ -205,6 +205,9 @@ class ObjectCreation extends Call, LateBindableExpr, @object_creation_expr { */ ObjectOrCollectionInitializer getInitializer() { result = this.getChild(-1) } + /** Holds if the type of the created object is inferred. */ + predicate isImplicitlyTyped() { implicitly_typed_object_creation(this) } + override string toString() { result = "object creation of type " + this.getType().getName() } override Expr getRawArgument(int i) { @@ -271,6 +274,9 @@ class DelegateCreation extends Expr, @delegate_creation_expr { */ class ExplicitDelegateCreation extends DelegateCreation, @explicit_delegate_creation_expr { override string getAPrimaryQlClass() { result = "ExplicitDelegateCreation" } + + /** Holds if the type of the created delegate is inferred. */ + predicate isImplicitlyTyped() { implicitly_typed_object_creation(this) } } /** diff --git a/csharp/ql/src/semmlecode.csharp.dbscheme b/csharp/ql/src/semmlecode.csharp.dbscheme index b93e202508f..f5903552e30 100644 --- a/csharp/ql/src/semmlecode.csharp.dbscheme +++ b/csharp/ql/src/semmlecode.csharp.dbscheme @@ -1078,6 +1078,8 @@ case @expr.kind of @throw_element = @throw_expr | @throw_stmt; +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + implicitly_typed_array_creation( unique int id: @array_creation_expr ref); @@ -1087,6 +1089,9 @@ explicitly_sized_array_creation( stackalloc_array_creation( unique int id: @array_creation_expr ref); +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + mutator_invocation_mode( unique int id: @operator_invocation_expr ref, int mode: int ref /* prefix = 1, postfix = 2*/); diff --git a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs new file mode 100644 index 00000000000..590490d43d5 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class AnonObj +{ + private List l = new(); + + public int Prop1 { get; set; } + + public AnonObj M1(AnonObj t) + { + this.M1(new() { Prop1 = 1 }); + return new(); + } + + delegate void D(int x); + + void M2(int x) { } + + D GetM() { return new(M2); } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected new file mode 100644 index 00000000000..0f845115541 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected @@ -0,0 +1,6 @@ +implicitlyTypedObjectCreation +| AnonymousObjectCreation.cs:7:31:7:35 | object creation of type List | +| AnonymousObjectCreation.cs:13:17:13:35 | object creation of type AnonObj | +| AnonymousObjectCreation.cs:14:16:14:20 | object creation of type AnonObj | +implicitlyTypedDelegateCreation +| AnonymousObjectCreation.cs:21:23:21:29 | delegate creation of type D | diff --git a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.ql b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.ql new file mode 100644 index 00000000000..835e9c9dca5 --- /dev/null +++ b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.ql @@ -0,0 +1,9 @@ +import csharp + +query predicate implicitlyTypedObjectCreation(ObjectCreation creation) { + creation.isImplicitlyTyped() +} + +query predicate implicitlyTypedDelegateCreation(ExplicitDelegateCreation creation) { + creation.isImplicitlyTyped() +} diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index b99aeb89bc2..098b664e9a6 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -1,3 +1,50 @@ +AnonymousObjectCreation.cs: +# 5| [Class] AnonObj +# 7| 5: [Field] l +# 7| -1: [TypeMention] List +# 7| 1: [TypeMention] AnonObj +# 7| 1: [AssignExpr] ... = ... +# 7| 0: [FieldAccess] access to field l +# 7| 1: [ObjectCreation] object creation of type List +# 9| 6: [Property] Prop1 +# 9| -1: [TypeMention] int +# 9| 3: [Getter] get_Prop1 +# 9| 4: [Setter] set_Prop1 +#-----| 2: (Parameters) +# 9| 0: [Parameter] value +# 11| 7: [Method] M1 +# 11| -1: [TypeMention] AnonObj +#-----| 2: (Parameters) +# 11| 0: [Parameter] t +# 11| -1: [TypeMention] AnonObj +# 12| 4: [BlockStmt] {...} +# 13| 0: [ExprStmt] ...; +# 13| 0: [MethodCall] call to method M1 +# 13| -1: [ThisAccess] this access +# 13| 0: [ObjectCreation] object creation of type AnonObj +# 13| -1: [ObjectInitializer] { ..., ... } +# 13| 0: [MemberInitializer] ... = ... +# 13| 0: [PropertyCall] access to property Prop1 +# 13| 1: [IntLiteral] 1 +# 14| 1: [ReturnStmt] return ...; +# 14| 0: [ObjectCreation] object creation of type AnonObj +# 17| 8: [DelegateType] D +#-----| 2: (Parameters) +# 17| 0: [Parameter] x +# 17| -1: [TypeMention] int +# 19| 9: [Method] M2 +# 19| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 19| 0: [Parameter] x +# 19| -1: [TypeMention] int +# 19| 4: [BlockStmt] {...} +# 21| 10: [Method] GetM +# 21| -1: [TypeMention] D +# 21| 4: [BlockStmt] {...} +# 21| 0: [ReturnStmt] return ...; +# 21| 0: [ExplicitDelegateCreation] delegate creation of type D +# 21| 0: [ImplicitDelegateCreation] delegate creation of type D +# 21| 0: [MethodAccess] access to method M2 Discard.cs: # 3| [Class] Discard # 5| 5: [Method] M1 diff --git a/csharp/upgrades/TO_CHANGE/upgrade.properties b/csharp/upgrades/TO_CHANGE/upgrade.properties new file mode 100644 index 00000000000..3cd65f1ce23 --- /dev/null +++ b/csharp/upgrades/TO_CHANGE/upgrade.properties @@ -0,0 +1,2 @@ +description: Added 'implicitly_typed_object_creation' and 'implicitly_typeable_object_creation_expr'. +compatibility: backwards From adba961634a1064e12148f29945a89c221c9be10 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Tue, 15 Dec 2020 09:24:01 +0100 Subject: [PATCH 2/5] Add DB upgrade folder --- .../old.dbscheme | 1894 ++++++++++++++++ .../semmlecode.csharp.dbscheme | 1899 +++++++++++++++++ .../upgrade.properties | 0 3 files changed, 3793 insertions(+) create mode 100644 csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/old.dbscheme create mode 100644 csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/semmlecode.csharp.dbscheme rename csharp/upgrades/{TO_CHANGE => b93e202508f21bdf2e0d831e464c3b14187378cc}/upgrade.properties (100%) diff --git a/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/old.dbscheme b/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/old.dbscheme new file mode 100644 index 00000000000..b93e202508f --- /dev/null +++ b/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/old.dbscheme @@ -0,0 +1,1894 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | --cil + * 3 | f1.cs + * 4 | f2.cs + * 5 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location_default ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/* + * External artifacts + */ + +externalDefects( + unique int id: @externalDefect, + string queryPath: string ref, + int location: @location ref, + string message: string ref, + float severity: float ref); + +externalMetrics( + unique int id: @externalMetric, + string queryPath: string ref, + int location: @location ref, + float value: float ref); + +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +snapshotDate( + unique date snapshotDate: date ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id: @duplication, + string relativePath: string ref, + int equivClass: int ref); + +similarCode( + unique int id: @similarity, + string relativePath: string ref, + int equivClass: int ref); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id: @duplication_or_similarity ref, + int offset: int ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @external_element + | @xmllocatable | @asp_element | @namespace; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@external_element = @externalMetric | @externalDefect | @externalDataElement; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +/* + fromSource(0) = unknown, + fromSource(1) = from source, + fromSource(2) = from library +*/ +files( + unique int id: @file, + string name: string ref, + string simple: string ref, + string ext: string ref, + int fromSource: int ref); + +folders( + unique int id: @folder, + string name: string ref, + string simple: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +extend( + unique int sub: @type ref, + int super: @type_or_ref ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +compiler_generated(unique int id: @modifiable_direct ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, array = 3, this = 4 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_compiler_generated( + unique int id: @expr ref); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); + +/* Common Intermediate Language - CIL */ + +case @cil_instruction.opcode of + 0 = @cil_nop +| 1 = @cil_break +| 2 = @cil_ldarg_0 +| 3 = @cil_ldarg_1 +| 4 = @cil_ldarg_2 +| 5 = @cil_ldarg_3 +| 6 = @cil_ldloc_0 +| 7 = @cil_ldloc_1 +| 8 = @cil_ldloc_2 +| 9 = @cil_ldloc_3 +| 10 = @cil_stloc_0 +| 11 = @cil_stloc_1 +| 12 = @cil_stloc_2 +| 13 = @cil_stloc_3 +| 14 = @cil_ldarg_s +| 15 = @cil_ldarga_s +| 16 = @cil_starg_s +| 17 = @cil_ldloc_s +| 18 = @cil_ldloca_s +| 19 = @cil_stloc_s +| 20 = @cil_ldnull +| 21 = @cil_ldc_i4_m1 +| 22 = @cil_ldc_i4_0 +| 23 = @cil_ldc_i4_1 +| 24 = @cil_ldc_i4_2 +| 25 = @cil_ldc_i4_3 +| 26 = @cil_ldc_i4_4 +| 27 = @cil_ldc_i4_5 +| 28 = @cil_ldc_i4_6 +| 29 = @cil_ldc_i4_7 +| 30 = @cil_ldc_i4_8 +| 31 = @cil_ldc_i4_s +| 32 = @cil_ldc_i4 +| 33 = @cil_ldc_i8 +| 34 = @cil_ldc_r4 +| 35 = @cil_ldc_r8 +| 37 = @cil_dup +| 38 = @cil_pop +| 39 = @cil_jmp +| 40 = @cil_call +| 41 = @cil_calli +| 42 = @cil_ret +| 43 = @cil_br_s +| 44 = @cil_brfalse_s +| 45 = @cil_brtrue_s +| 46 = @cil_beq_s +| 47 = @cil_bge_s +| 48 = @cil_bgt_s +| 49 = @cil_ble_s +| 50 = @cil_blt_s +| 51 = @cil_bne_un_s +| 52 = @cil_bge_un_s +| 53 = @cil_bgt_un_s +| 54 = @cil_ble_un_s +| 55 = @cil_blt_un_s +| 56 = @cil_br +| 57 = @cil_brfalse +| 58 = @cil_brtrue +| 59 = @cil_beq +| 60 = @cil_bge +| 61 = @cil_bgt +| 62 = @cil_ble +| 63 = @cil_blt +| 64 = @cil_bne_un +| 65 = @cil_bge_un +| 66 = @cil_bgt_un +| 67 = @cil_ble_un +| 68 = @cil_blt_un +| 69 = @cil_switch +| 70 = @cil_ldind_i1 +| 71 = @cil_ldind_u1 +| 72 = @cil_ldind_i2 +| 73 = @cil_ldind_u2 +| 74 = @cil_ldind_i4 +| 75 = @cil_ldind_u4 +| 76 = @cil_ldind_i8 +| 77 = @cil_ldind_i +| 78 = @cil_ldind_r4 +| 79 = @cil_ldind_r8 +| 80 = @cil_ldind_ref +| 81 = @cil_stind_ref +| 82 = @cil_stind_i1 +| 83 = @cil_stind_i2 +| 84 = @cil_stind_i4 +| 85 = @cil_stind_i8 +| 86 = @cil_stind_r4 +| 87 = @cil_stind_r8 +| 88 = @cil_add +| 89 = @cil_sub +| 90 = @cil_mul +| 91 = @cil_div +| 92 = @cil_div_un +| 93 = @cil_rem +| 94 = @cil_rem_un +| 95 = @cil_and +| 96 = @cil_or +| 97 = @cil_xor +| 98 = @cil_shl +| 99 = @cil_shr +| 100 = @cil_shr_un +| 101 = @cil_neg +| 102 = @cil_not +| 103 = @cil_conv_i1 +| 104 = @cil_conv_i2 +| 105 = @cil_conv_i4 +| 106 = @cil_conv_i8 +| 107 = @cil_conv_r4 +| 108 = @cil_conv_r8 +| 109 = @cil_conv_u4 +| 110 = @cil_conv_u8 +| 111 = @cil_callvirt +| 112 = @cil_cpobj +| 113 = @cil_ldobj +| 114 = @cil_ldstr +| 115 = @cil_newobj +| 116 = @cil_castclass +| 117 = @cil_isinst +| 118 = @cil_conv_r_un +| 121 = @cil_unbox +| 122 = @cil_throw +| 123 = @cil_ldfld +| 124 = @cil_ldflda +| 125 = @cil_stfld +| 126 = @cil_ldsfld +| 127 = @cil_ldsflda +| 128 = @cil_stsfld +| 129 = @cil_stobj +| 130 = @cil_conv_ovf_i1_un +| 131 = @cil_conv_ovf_i2_un +| 132 = @cil_conv_ovf_i4_un +| 133 = @cil_conv_ovf_i8_un +| 134 = @cil_conv_ovf_u1_un +| 135 = @cil_conv_ovf_u2_un +| 136 = @cil_conv_ovf_u4_un +| 137 = @cil_conv_ovf_u8_un +| 138 = @cil_conv_ovf_i_un +| 139 = @cil_conv_ovf_u_un +| 140 = @cil_box +| 141 = @cil_newarr +| 142 = @cil_ldlen +| 143 = @cil_ldelema +| 144 = @cil_ldelem_i1 +| 145 = @cil_ldelem_u1 +| 146 = @cil_ldelem_i2 +| 147 = @cil_ldelem_u2 +| 148 = @cil_ldelem_i4 +| 149 = @cil_ldelem_u4 +| 150 = @cil_ldelem_i8 +| 151 = @cil_ldelem_i +| 152 = @cil_ldelem_r4 +| 153 = @cil_ldelem_r8 +| 154 = @cil_ldelem_ref +| 155 = @cil_stelem_i +| 156 = @cil_stelem_i1 +| 157 = @cil_stelem_i2 +| 158 = @cil_stelem_i4 +| 159 = @cil_stelem_i8 +| 160 = @cil_stelem_r4 +| 161 = @cil_stelem_r8 +| 162 = @cil_stelem_ref +| 163 = @cil_ldelem +| 164 = @cil_stelem +| 165 = @cil_unbox_any +| 179 = @cil_conv_ovf_i1 +| 180 = @cil_conv_ovf_u1 +| 181 = @cil_conv_ovf_i2 +| 182 = @cil_conv_ovf_u2 +| 183 = @cil_conv_ovf_i4 +| 184 = @cil_conv_ovf_u4 +| 185 = @cil_conv_ovf_i8 +| 186 = @cil_conv_ovf_u8 +| 194 = @cil_refanyval +| 195 = @cil_ckinfinite +| 198 = @cil_mkrefany +| 208 = @cil_ldtoken +| 209 = @cil_conv_u2 +| 210 = @cil_conv_u1 +| 211 = @cil_conv_i +| 212 = @cil_conv_ovf_i +| 213 = @cil_conv_ovf_u +| 214 = @cil_add_ovf +| 215 = @cil_add_ovf_un +| 216 = @cil_mul_ovf +| 217 = @cil_mul_ovf_un +| 218 = @cil_sub_ovf +| 219 = @cil_sub_ovf_un +| 220 = @cil_endfinally +| 221 = @cil_leave +| 222 = @cil_leave_s +| 223 = @cil_stind_i +| 224 = @cil_conv_u +| 65024 = @cil_arglist +| 65025 = @cil_ceq +| 65026 = @cil_cgt +| 65027 = @cil_cgt_un +| 65028 = @cil_clt +| 65029 = @cil_clt_un +| 65030 = @cil_ldftn +| 65031 = @cil_ldvirtftn +| 65033 = @cil_ldarg +| 65034 = @cil_ldarga +| 65035 = @cil_starg +| 65036 = @cil_ldloc +| 65037 = @cil_ldloca +| 65038 = @cil_stloc +| 65039 = @cil_localloc +| 65041 = @cil_endfilter +| 65042 = @cil_unaligned +| 65043 = @cil_volatile +| 65044 = @cil_tail +| 65045 = @cil_initobj +| 65046 = @cil_constrained +| 65047 = @cil_cpblk +| 65048 = @cil_initblk +| 65050 = @cil_rethrow +| 65052 = @cil_sizeof +| 65053 = @cil_refanytype +| 65054 = @cil_readonly +; + +// CIL ignored instructions + +@cil_ignore = @cil_nop | @cil_break | @cil_volatile | @cil_unaligned; + +// CIL local/parameter/field access + +@cil_ldarg_any = @cil_ldarg_0 | @cil_ldarg_1 | @cil_ldarg_2 | @cil_ldarg_3 | @cil_ldarg_s | @cil_ldarga_s | @cil_ldarg | @cil_ldarga; +@cil_starg_any = @cil_starg | @cil_starg_s; + +@cil_ldloc_any = @cil_ldloc_0 | @cil_ldloc_1 | @cil_ldloc_2 | @cil_ldloc_3 | @cil_ldloc_s | @cil_ldloca_s | @cil_ldloc | @cil_ldloca; +@cil_stloc_any = @cil_stloc_0 | @cil_stloc_1 | @cil_stloc_2 | @cil_stloc_3 | @cil_stloc_s | @cil_stloc; + +@cil_ldfld_any = @cil_ldfld | @cil_ldsfld | @cil_ldsflda | @cil_ldflda; +@cil_stfld_any = @cil_stfld | @cil_stsfld; + +@cil_local_access = @cil_stloc_any | @cil_ldloc_any; +@cil_arg_access = @cil_starg_any | @cil_ldarg_any; +@cil_read_access = @cil_ldloc_any | @cil_ldarg_any | @cil_ldfld_any; +@cil_write_access = @cil_stloc_any | @cil_starg_any | @cil_stfld_any; + +@cil_stack_access = @cil_local_access | @cil_arg_access; +@cil_field_access = @cil_ldfld_any | @cil_stfld_any; + +@cil_access = @cil_read_access | @cil_write_access; + +// CIL constant/literal instructions + +@cil_ldc_i = @cil_ldc_i4_any | @cil_ldc_i8; + +@cil_ldc_i4_any = @cil_ldc_i4_m1 | @cil_ldc_i4_0 | @cil_ldc_i4_1 | @cil_ldc_i4_2 | @cil_ldc_i4_3 | + @cil_ldc_i4_4 | @cil_ldc_i4_5 | @cil_ldc_i4_6 | @cil_ldc_i4_7 | @cil_ldc_i4_8 | @cil_ldc_i4_s | @cil_ldc_i4; + +@cil_ldc_r = @cil_ldc_r4 | @cil_ldc_r8; + +@cil_literal = @cil_ldnull | @cil_ldc_i | @cil_ldc_r | @cil_ldstr; + +// Control flow + +@cil_conditional_jump = @cil_binary_jump | @cil_unary_jump; +@cil_binary_jump = @cil_beq_s | @cil_bge_s | @cil_bgt_s | @cil_ble_s | @cil_blt_s | + @cil_bne_un_s | @cil_bge_un_s | @cil_bgt_un_s | @cil_ble_un_s | @cil_blt_un_s | + @cil_beq | @cil_bge | @cil_bgt | @cil_ble | @cil_blt | + @cil_bne_un | @cil_bge_un | @cil_bgt_un | @cil_ble_un | @cil_blt_un; +@cil_unary_jump = @cil_brfalse_s | @cil_brtrue_s | @cil_brfalse | @cil_brtrue | @cil_switch; +@cil_unconditional_jump = @cil_br | @cil_br_s | @cil_leave_any; +@cil_leave_any = @cil_leave | @cil_leave_s; +@cil_jump = @cil_unconditional_jump | @cil_conditional_jump; + +// CIL call instructions + +@cil_call_any = @cil_jmp | @cil_call | @cil_calli | @cil_tail | @cil_callvirt | @cil_newobj; + +// CIL expression instructions + +@cil_expr = @cil_literal | @cil_binary_expr | @cil_unary_expr | @cil_call_any | @cil_read_access | + @cil_newarr | @cil_ldtoken | @cil_sizeof | + @cil_ldftn | @cil_ldvirtftn | @cil_localloc | @cil_mkrefany | @cil_refanytype | @cil_arglist | @cil_dup; + +@cil_unary_expr = + @cil_conversion_operation | @cil_unary_arithmetic_operation | @cil_unary_bitwise_operation| + @cil_ldlen | @cil_isinst | @cil_box | @cil_ldobj | @cil_castclass | @cil_unbox_any | + @cil_ldind | @cil_unbox; + +@cil_conversion_operation = + @cil_conv_i1 | @cil_conv_i2 | @cil_conv_i4 | @cil_conv_i8 | + @cil_conv_u1 | @cil_conv_u2 | @cil_conv_u4 | @cil_conv_u8 | + @cil_conv_ovf_i | @cil_conv_ovf_i_un | @cil_conv_ovf_i1 | @cil_conv_ovf_i1_un | + @cil_conv_ovf_i2 | @cil_conv_ovf_i2_un | @cil_conv_ovf_i4 | @cil_conv_ovf_i4_un | + @cil_conv_ovf_i8 | @cil_conv_ovf_i8_un | @cil_conv_ovf_u | @cil_conv_ovf_u_un | + @cil_conv_ovf_u1 | @cil_conv_ovf_u1_un | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_ovf_u4 | @cil_conv_ovf_u4_un | @cil_conv_ovf_u8 | @cil_conv_ovf_u8_un | + @cil_conv_r4 | @cil_conv_r8 | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_i | @cil_conv_u | @cil_conv_r_un; + +@cil_ldind = @cil_ldind_i | @cil_ldind_i1 | @cil_ldind_i2 | @cil_ldind_i4 | @cil_ldind_i8 | + @cil_ldind_r4 | @cil_ldind_r8 | @cil_ldind_ref | @cil_ldind_u1 | @cil_ldind_u2 | @cil_ldind_u4; + +@cil_stind = @cil_stind_i | @cil_stind_i1 | @cil_stind_i2 | @cil_stind_i4 | @cil_stind_i8 | + @cil_stind_r4 | @cil_stind_r8 | @cil_stind_ref; + +@cil_bitwise_operation = @cil_binary_bitwise_operation | @cil_unary_bitwise_operation; + +@cil_binary_bitwise_operation = @cil_and | @cil_or | @cil_xor | @cil_shr | @cil_shr | @cil_shr_un | @cil_shl; + +@cil_binary_arithmetic_operation = @cil_add | @cil_sub | @cil_mul | @cil_div | @cil_div_un | + @cil_rem | @cil_rem_un | @cil_add_ovf | @cil_add_ovf_un | @cil_mul_ovf | @cil_mul_ovf_un | + @cil_sub_ovf | @cil_sub_ovf_un; + +@cil_unary_bitwise_operation = @cil_not; + +@cil_binary_expr = @cil_binary_arithmetic_operation | @cil_binary_bitwise_operation | @cil_read_array | @cil_comparison_operation; + +@cil_unary_arithmetic_operation = @cil_neg; + +@cil_comparison_operation = @cil_cgt_un | @cil_ceq | @cil_cgt | @cil_clt | @cil_clt_un; + +// Elements that retrieve an address of something +@cil_read_ref = @cil_ldloca_s | @cil_ldarga_s | @cil_ldflda | @cil_ldsflda | @cil_ldelema; + +// CIL array instructions + +@cil_read_array = + @cil_ldelem | @cil_ldelema | @cil_ldelem_i1 | @cil_ldelem_ref | @cil_ldelem_i | + @cil_ldelem_i1 | @cil_ldelem_i2 | @cil_ldelem_i4 | @cil_ldelem_i8 | @cil_ldelem_r4 | + @cil_ldelem_r8 | @cil_ldelem_u1 | @cil_ldelem_u2 | @cil_ldelem_u4; + +@cil_write_array = @cil_stelem | @cil_stelem_ref | + @cil_stelem_i | @cil_stelem_i1 | @cil_stelem_i2 | @cil_stelem_i4 | @cil_stelem_i8 | + @cil_stelem_r4 | @cil_stelem_r8; + +@cil_throw_any = @cil_throw | @cil_rethrow; + +#keyset[impl, index] +cil_instruction( + unique int id: @cil_instruction, + int opcode: int ref, + int index: int ref, + int impl: @cil_method_implementation ref); + +cil_jump( + unique int instruction: @cil_jump ref, + int target: @cil_instruction ref); + +cil_access( + unique int instruction: @cil_instruction ref, + int target: @cil_accessible ref); + +cil_value( + unique int instruction: @cil_literal ref, + string value: string ref); + +#keyset[instruction, index] +cil_switch( + int instruction: @cil_switch ref, + int index: int ref, + int target: @cil_instruction ref); + +cil_instruction_location( + unique int id: @cil_instruction ref, + int loc: @location ref); + +cil_type_location( + int id: @cil_type ref, + int loc: @location ref); + +cil_method_location( + int id: @cil_method ref, + int loc: @location ref); + +@cil_namespace = @namespace; + +@cil_type_container = @cil_type | @cil_namespace | @cil_method; + +case @cil_type.kind of + 0 = @cil_valueorreftype +| 1 = @cil_typeparameter +| 2 = @cil_array_type +| 3 = @cil_pointer_type +; + +cil_type( + unique int id: @cil_type, + string name: string ref, + int kind: int ref, + int parent: @cil_type_container ref, + int sourceDecl: @cil_type ref); + +cil_pointer_type( + unique int id: @cil_pointer_type ref, + int pointee: @cil_type ref); + +cil_array_type( + unique int id: @cil_array_type ref, + int element_type: @cil_type ref, + int rank: int ref); + +cil_method( + unique int id: @cil_method, + string name: string ref, + int parent: @cil_type ref, + int return_type: @cil_type ref); + +cil_method_source_declaration( + unique int method: @cil_method ref, + int source: @cil_method ref); + +cil_method_implementation( + unique int id: @cil_method_implementation, + int method: @cil_method ref, + int location: @assembly ref); + +cil_implements( + int id: @cil_method ref, + int decl: @cil_method ref); + +#keyset[parent, name] +cil_field( + unique int id: @cil_field, + int parent: @cil_type ref, + string name: string ref, + int field_type: @cil_type ref); + +@cil_element = @cil_instruction | @cil_declaration | @cil_handler | @cil_attribute | @cil_namespace; +@cil_named_element = @cil_declaration | @cil_namespace; +@cil_declaration = @cil_variable | @cil_method | @cil_type | @cil_member; +@cil_accessible = @cil_declaration; +@cil_variable = @cil_field | @cil_stack_variable; +@cil_stack_variable = @cil_local_variable | @cil_parameter; +@cil_member = @cil_method | @cil_type | @cil_field | @cil_property | @cil_event; + +#keyset[method, index] +cil_parameter( + unique int id: @cil_parameter, + int method: @cil_method ref, + int index: int ref, + int param_type: @cil_type ref); + +cil_parameter_in(unique int id: @cil_parameter ref); +cil_parameter_out(unique int id: @cil_parameter ref); + +cil_setter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_getter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_adder(unique int event: @cil_event ref, + int method: @cil_method ref); + +cil_remover(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_raiser(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_property( + unique int id: @cil_property, + int parent: @cil_type ref, + string name: string ref, + int property_type: @cil_type ref); + +#keyset[parent, name] +cil_event(unique int id: @cil_event, + int parent: @cil_type ref, + string name: string ref, + int event_type: @cil_type ref); + +#keyset[impl, index] +cil_local_variable( + unique int id: @cil_local_variable, + int impl: @cil_method_implementation ref, + int index: int ref, + int var_type: @cil_type ref); + +// CIL handlers (exception handlers etc). + +case @cil_handler.kind of + 0 = @cil_catch_handler +| 1 = @cil_filter_handler +| 2 = @cil_finally_handler +| 4 = @cil_fault_handler +; + +#keyset[impl, index] +cil_handler( + unique int id: @cil_handler, + int impl: @cil_method_implementation ref, + int index: int ref, + int kind: int ref, + int try_start: @cil_instruction ref, + int try_end: @cil_instruction ref, + int handler_start: @cil_instruction ref); + +cil_handler_filter( + unique int id: @cil_handler ref, + int filter_start: @cil_instruction ref); + +cil_handler_type( + unique int id: @cil_handler ref, + int catch_type: @cil_type ref); + +@cil_controlflow_node = @cil_entry_point | @cil_instruction; + +@cil_entry_point = @cil_method_implementation | @cil_handler; + +@cil_dataflow_node = @cil_instruction | @cil_variable | @cil_method; + +cil_method_stack_size( + unique int method: @cil_method_implementation ref, + int size: int ref); + +// CIL modifiers + +cil_public(int id: @cil_member ref); +cil_private(int id: @cil_member ref); +cil_protected(int id: @cil_member ref); +cil_internal(int id: @cil_member ref); +cil_static(int id: @cil_member ref); +cil_sealed(int id: @cil_member ref); +cil_virtual(int id: @cil_method ref); +cil_abstract(int id: @cil_member ref); +cil_class(int id: @cil_type ref); +cil_interface(int id: @cil_type ref); +cil_security(int id: @cil_member ref); +cil_requiresecobject(int id: @cil_method ref); +cil_specialname(int id: @cil_method ref); +cil_newslot(int id: @cil_method ref); + +cil_base_class(unique int id: @cil_type ref, int base: @cil_type ref); +cil_base_interface(int id: @cil_type ref, int base: @cil_type ref); +cil_enum_underlying_type(unique int id: @cil_type ref, int underlying: @cil_type ref); + +#keyset[unbound, index] +cil_type_parameter( + int unbound: @cil_member ref, + int index: int ref, + int param: @cil_typeparameter ref); + +#keyset[bound, index] +cil_type_argument( + int bound: @cil_member ref, + int index: int ref, + int t: @cil_type ref); + +// CIL type parameter constraints + +cil_typeparam_covariant(int tp: @cil_typeparameter ref); +cil_typeparam_contravariant(int tp: @cil_typeparameter ref); +cil_typeparam_class(int tp: @cil_typeparameter ref); +cil_typeparam_struct(int tp: @cil_typeparameter ref); +cil_typeparam_new(int tp: @cil_typeparameter ref); +cil_typeparam_constraint(int tp: @cil_typeparameter ref, int supertype: @cil_type ref); + +// CIL attributes + +cil_attribute( + unique int attributeid: @cil_attribute, + int element: @cil_declaration ref, + int constructor: @cil_method ref); + +#keyset[attribute_id, param] +cil_attribute_named_argument( + int attribute_id: @cil_attribute ref, + string param: string ref, + string value: string ref); + +#keyset[attribute_id, index] +cil_attribute_positional_argument( + int attribute_id: @cil_attribute ref, + int index: int ref, + string value: string ref); + + +// Common .Net data model covering both C# and CIL + +// Common elements +@dotnet_element = @element | @cil_element; +@dotnet_named_element = @named_element | @cil_named_element; +@dotnet_callable = @callable | @cil_method; +@dotnet_variable = @variable | @cil_variable; +@dotnet_field = @field | @cil_field; +@dotnet_parameter = @parameter | @cil_parameter; +@dotnet_declaration = @declaration | @cil_declaration; +@dotnet_member = @member | @cil_member; +@dotnet_event = @event | @cil_event; +@dotnet_property = @property | @cil_property | @indexer; + +// Common types +@dotnet_type = @type | @cil_type; +@dotnet_call = @call | @cil_call_any; +@dotnet_throw = @throw_element | @cil_throw_any; +@dotnet_valueorreftype = @cil_valueorreftype | @value_or_ref_type | @cil_array_type | @void_type; +@dotnet_typeparameter = @type_parameter | @cil_typeparameter; +@dotnet_array_type = @array_type | @cil_array_type; +@dotnet_pointer_type = @pointer_type | @cil_pointer_type; +@dotnet_type_parameter = @type_parameter | @cil_typeparameter; +@dotnet_generic = @dotnet_valueorreftype | @dotnet_callable; + +// Attributes +@dotnet_attribute = @attribute | @cil_attribute; + +// Expressions +@dotnet_expr = @expr | @cil_expr; + +// Literals +@dotnet_literal = @literal_expr | @cil_literal; +@dotnet_string_literal = @string_literal_expr | @cil_ldstr; +@dotnet_int_literal = @integer_literal_expr | @cil_ldc_i; +@dotnet_float_literal = @float_literal_expr | @cil_ldc_r; +@dotnet_null_literal = @null_literal_expr | @cil_ldnull; + +@metadata_entity = @cil_method | @cil_type | @cil_field | @cil_property | @field | @property | + @callable | @value_or_ref_type | @void_type; + +#keyset[entity, location] +metadata_handle(int entity : @metadata_entity ref, int location: @assembly ref, int handle: int ref) diff --git a/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/semmlecode.csharp.dbscheme b/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..f5903552e30 --- /dev/null +++ b/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/semmlecode.csharp.dbscheme @@ -0,0 +1,1899 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | --cil + * 3 | f1.cs + * 4 | f2.cs + * 5 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location_default ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/* + * External artifacts + */ + +externalDefects( + unique int id: @externalDefect, + string queryPath: string ref, + int location: @location ref, + string message: string ref, + float severity: float ref); + +externalMetrics( + unique int id: @externalMetric, + string queryPath: string ref, + int location: @location ref, + float value: float ref); + +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +snapshotDate( + unique date snapshotDate: date ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id: @duplication, + string relativePath: string ref, + int equivClass: int ref); + +similarCode( + unique int id: @similarity, + string relativePath: string ref, + int equivClass: int ref); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id: @duplication_or_similarity ref, + int offset: int ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @external_element + | @xmllocatable | @asp_element | @namespace; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@external_element = @externalMetric | @externalDefect | @externalDataElement; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +/* + fromSource(0) = unknown, + fromSource(1) = from source, + fromSource(2) = from library +*/ +files( + unique int id: @file, + string name: string ref, + string simple: string ref, + string ext: string ref, + int fromSource: int ref); + +folders( + unique int id: @folder, + string name: string ref, + string simple: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +extend( + unique int sub: @type ref, + int super: @type_or_ref ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +compiler_generated(unique int id: @modifiable_direct ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, array = 3, this = 4 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_compiler_generated( + unique int id: @expr ref); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); + +/* Common Intermediate Language - CIL */ + +case @cil_instruction.opcode of + 0 = @cil_nop +| 1 = @cil_break +| 2 = @cil_ldarg_0 +| 3 = @cil_ldarg_1 +| 4 = @cil_ldarg_2 +| 5 = @cil_ldarg_3 +| 6 = @cil_ldloc_0 +| 7 = @cil_ldloc_1 +| 8 = @cil_ldloc_2 +| 9 = @cil_ldloc_3 +| 10 = @cil_stloc_0 +| 11 = @cil_stloc_1 +| 12 = @cil_stloc_2 +| 13 = @cil_stloc_3 +| 14 = @cil_ldarg_s +| 15 = @cil_ldarga_s +| 16 = @cil_starg_s +| 17 = @cil_ldloc_s +| 18 = @cil_ldloca_s +| 19 = @cil_stloc_s +| 20 = @cil_ldnull +| 21 = @cil_ldc_i4_m1 +| 22 = @cil_ldc_i4_0 +| 23 = @cil_ldc_i4_1 +| 24 = @cil_ldc_i4_2 +| 25 = @cil_ldc_i4_3 +| 26 = @cil_ldc_i4_4 +| 27 = @cil_ldc_i4_5 +| 28 = @cil_ldc_i4_6 +| 29 = @cil_ldc_i4_7 +| 30 = @cil_ldc_i4_8 +| 31 = @cil_ldc_i4_s +| 32 = @cil_ldc_i4 +| 33 = @cil_ldc_i8 +| 34 = @cil_ldc_r4 +| 35 = @cil_ldc_r8 +| 37 = @cil_dup +| 38 = @cil_pop +| 39 = @cil_jmp +| 40 = @cil_call +| 41 = @cil_calli +| 42 = @cil_ret +| 43 = @cil_br_s +| 44 = @cil_brfalse_s +| 45 = @cil_brtrue_s +| 46 = @cil_beq_s +| 47 = @cil_bge_s +| 48 = @cil_bgt_s +| 49 = @cil_ble_s +| 50 = @cil_blt_s +| 51 = @cil_bne_un_s +| 52 = @cil_bge_un_s +| 53 = @cil_bgt_un_s +| 54 = @cil_ble_un_s +| 55 = @cil_blt_un_s +| 56 = @cil_br +| 57 = @cil_brfalse +| 58 = @cil_brtrue +| 59 = @cil_beq +| 60 = @cil_bge +| 61 = @cil_bgt +| 62 = @cil_ble +| 63 = @cil_blt +| 64 = @cil_bne_un +| 65 = @cil_bge_un +| 66 = @cil_bgt_un +| 67 = @cil_ble_un +| 68 = @cil_blt_un +| 69 = @cil_switch +| 70 = @cil_ldind_i1 +| 71 = @cil_ldind_u1 +| 72 = @cil_ldind_i2 +| 73 = @cil_ldind_u2 +| 74 = @cil_ldind_i4 +| 75 = @cil_ldind_u4 +| 76 = @cil_ldind_i8 +| 77 = @cil_ldind_i +| 78 = @cil_ldind_r4 +| 79 = @cil_ldind_r8 +| 80 = @cil_ldind_ref +| 81 = @cil_stind_ref +| 82 = @cil_stind_i1 +| 83 = @cil_stind_i2 +| 84 = @cil_stind_i4 +| 85 = @cil_stind_i8 +| 86 = @cil_stind_r4 +| 87 = @cil_stind_r8 +| 88 = @cil_add +| 89 = @cil_sub +| 90 = @cil_mul +| 91 = @cil_div +| 92 = @cil_div_un +| 93 = @cil_rem +| 94 = @cil_rem_un +| 95 = @cil_and +| 96 = @cil_or +| 97 = @cil_xor +| 98 = @cil_shl +| 99 = @cil_shr +| 100 = @cil_shr_un +| 101 = @cil_neg +| 102 = @cil_not +| 103 = @cil_conv_i1 +| 104 = @cil_conv_i2 +| 105 = @cil_conv_i4 +| 106 = @cil_conv_i8 +| 107 = @cil_conv_r4 +| 108 = @cil_conv_r8 +| 109 = @cil_conv_u4 +| 110 = @cil_conv_u8 +| 111 = @cil_callvirt +| 112 = @cil_cpobj +| 113 = @cil_ldobj +| 114 = @cil_ldstr +| 115 = @cil_newobj +| 116 = @cil_castclass +| 117 = @cil_isinst +| 118 = @cil_conv_r_un +| 121 = @cil_unbox +| 122 = @cil_throw +| 123 = @cil_ldfld +| 124 = @cil_ldflda +| 125 = @cil_stfld +| 126 = @cil_ldsfld +| 127 = @cil_ldsflda +| 128 = @cil_stsfld +| 129 = @cil_stobj +| 130 = @cil_conv_ovf_i1_un +| 131 = @cil_conv_ovf_i2_un +| 132 = @cil_conv_ovf_i4_un +| 133 = @cil_conv_ovf_i8_un +| 134 = @cil_conv_ovf_u1_un +| 135 = @cil_conv_ovf_u2_un +| 136 = @cil_conv_ovf_u4_un +| 137 = @cil_conv_ovf_u8_un +| 138 = @cil_conv_ovf_i_un +| 139 = @cil_conv_ovf_u_un +| 140 = @cil_box +| 141 = @cil_newarr +| 142 = @cil_ldlen +| 143 = @cil_ldelema +| 144 = @cil_ldelem_i1 +| 145 = @cil_ldelem_u1 +| 146 = @cil_ldelem_i2 +| 147 = @cil_ldelem_u2 +| 148 = @cil_ldelem_i4 +| 149 = @cil_ldelem_u4 +| 150 = @cil_ldelem_i8 +| 151 = @cil_ldelem_i +| 152 = @cil_ldelem_r4 +| 153 = @cil_ldelem_r8 +| 154 = @cil_ldelem_ref +| 155 = @cil_stelem_i +| 156 = @cil_stelem_i1 +| 157 = @cil_stelem_i2 +| 158 = @cil_stelem_i4 +| 159 = @cil_stelem_i8 +| 160 = @cil_stelem_r4 +| 161 = @cil_stelem_r8 +| 162 = @cil_stelem_ref +| 163 = @cil_ldelem +| 164 = @cil_stelem +| 165 = @cil_unbox_any +| 179 = @cil_conv_ovf_i1 +| 180 = @cil_conv_ovf_u1 +| 181 = @cil_conv_ovf_i2 +| 182 = @cil_conv_ovf_u2 +| 183 = @cil_conv_ovf_i4 +| 184 = @cil_conv_ovf_u4 +| 185 = @cil_conv_ovf_i8 +| 186 = @cil_conv_ovf_u8 +| 194 = @cil_refanyval +| 195 = @cil_ckinfinite +| 198 = @cil_mkrefany +| 208 = @cil_ldtoken +| 209 = @cil_conv_u2 +| 210 = @cil_conv_u1 +| 211 = @cil_conv_i +| 212 = @cil_conv_ovf_i +| 213 = @cil_conv_ovf_u +| 214 = @cil_add_ovf +| 215 = @cil_add_ovf_un +| 216 = @cil_mul_ovf +| 217 = @cil_mul_ovf_un +| 218 = @cil_sub_ovf +| 219 = @cil_sub_ovf_un +| 220 = @cil_endfinally +| 221 = @cil_leave +| 222 = @cil_leave_s +| 223 = @cil_stind_i +| 224 = @cil_conv_u +| 65024 = @cil_arglist +| 65025 = @cil_ceq +| 65026 = @cil_cgt +| 65027 = @cil_cgt_un +| 65028 = @cil_clt +| 65029 = @cil_clt_un +| 65030 = @cil_ldftn +| 65031 = @cil_ldvirtftn +| 65033 = @cil_ldarg +| 65034 = @cil_ldarga +| 65035 = @cil_starg +| 65036 = @cil_ldloc +| 65037 = @cil_ldloca +| 65038 = @cil_stloc +| 65039 = @cil_localloc +| 65041 = @cil_endfilter +| 65042 = @cil_unaligned +| 65043 = @cil_volatile +| 65044 = @cil_tail +| 65045 = @cil_initobj +| 65046 = @cil_constrained +| 65047 = @cil_cpblk +| 65048 = @cil_initblk +| 65050 = @cil_rethrow +| 65052 = @cil_sizeof +| 65053 = @cil_refanytype +| 65054 = @cil_readonly +; + +// CIL ignored instructions + +@cil_ignore = @cil_nop | @cil_break | @cil_volatile | @cil_unaligned; + +// CIL local/parameter/field access + +@cil_ldarg_any = @cil_ldarg_0 | @cil_ldarg_1 | @cil_ldarg_2 | @cil_ldarg_3 | @cil_ldarg_s | @cil_ldarga_s | @cil_ldarg | @cil_ldarga; +@cil_starg_any = @cil_starg | @cil_starg_s; + +@cil_ldloc_any = @cil_ldloc_0 | @cil_ldloc_1 | @cil_ldloc_2 | @cil_ldloc_3 | @cil_ldloc_s | @cil_ldloca_s | @cil_ldloc | @cil_ldloca; +@cil_stloc_any = @cil_stloc_0 | @cil_stloc_1 | @cil_stloc_2 | @cil_stloc_3 | @cil_stloc_s | @cil_stloc; + +@cil_ldfld_any = @cil_ldfld | @cil_ldsfld | @cil_ldsflda | @cil_ldflda; +@cil_stfld_any = @cil_stfld | @cil_stsfld; + +@cil_local_access = @cil_stloc_any | @cil_ldloc_any; +@cil_arg_access = @cil_starg_any | @cil_ldarg_any; +@cil_read_access = @cil_ldloc_any | @cil_ldarg_any | @cil_ldfld_any; +@cil_write_access = @cil_stloc_any | @cil_starg_any | @cil_stfld_any; + +@cil_stack_access = @cil_local_access | @cil_arg_access; +@cil_field_access = @cil_ldfld_any | @cil_stfld_any; + +@cil_access = @cil_read_access | @cil_write_access; + +// CIL constant/literal instructions + +@cil_ldc_i = @cil_ldc_i4_any | @cil_ldc_i8; + +@cil_ldc_i4_any = @cil_ldc_i4_m1 | @cil_ldc_i4_0 | @cil_ldc_i4_1 | @cil_ldc_i4_2 | @cil_ldc_i4_3 | + @cil_ldc_i4_4 | @cil_ldc_i4_5 | @cil_ldc_i4_6 | @cil_ldc_i4_7 | @cil_ldc_i4_8 | @cil_ldc_i4_s | @cil_ldc_i4; + +@cil_ldc_r = @cil_ldc_r4 | @cil_ldc_r8; + +@cil_literal = @cil_ldnull | @cil_ldc_i | @cil_ldc_r | @cil_ldstr; + +// Control flow + +@cil_conditional_jump = @cil_binary_jump | @cil_unary_jump; +@cil_binary_jump = @cil_beq_s | @cil_bge_s | @cil_bgt_s | @cil_ble_s | @cil_blt_s | + @cil_bne_un_s | @cil_bge_un_s | @cil_bgt_un_s | @cil_ble_un_s | @cil_blt_un_s | + @cil_beq | @cil_bge | @cil_bgt | @cil_ble | @cil_blt | + @cil_bne_un | @cil_bge_un | @cil_bgt_un | @cil_ble_un | @cil_blt_un; +@cil_unary_jump = @cil_brfalse_s | @cil_brtrue_s | @cil_brfalse | @cil_brtrue | @cil_switch; +@cil_unconditional_jump = @cil_br | @cil_br_s | @cil_leave_any; +@cil_leave_any = @cil_leave | @cil_leave_s; +@cil_jump = @cil_unconditional_jump | @cil_conditional_jump; + +// CIL call instructions + +@cil_call_any = @cil_jmp | @cil_call | @cil_calli | @cil_tail | @cil_callvirt | @cil_newobj; + +// CIL expression instructions + +@cil_expr = @cil_literal | @cil_binary_expr | @cil_unary_expr | @cil_call_any | @cil_read_access | + @cil_newarr | @cil_ldtoken | @cil_sizeof | + @cil_ldftn | @cil_ldvirtftn | @cil_localloc | @cil_mkrefany | @cil_refanytype | @cil_arglist | @cil_dup; + +@cil_unary_expr = + @cil_conversion_operation | @cil_unary_arithmetic_operation | @cil_unary_bitwise_operation| + @cil_ldlen | @cil_isinst | @cil_box | @cil_ldobj | @cil_castclass | @cil_unbox_any | + @cil_ldind | @cil_unbox; + +@cil_conversion_operation = + @cil_conv_i1 | @cil_conv_i2 | @cil_conv_i4 | @cil_conv_i8 | + @cil_conv_u1 | @cil_conv_u2 | @cil_conv_u4 | @cil_conv_u8 | + @cil_conv_ovf_i | @cil_conv_ovf_i_un | @cil_conv_ovf_i1 | @cil_conv_ovf_i1_un | + @cil_conv_ovf_i2 | @cil_conv_ovf_i2_un | @cil_conv_ovf_i4 | @cil_conv_ovf_i4_un | + @cil_conv_ovf_i8 | @cil_conv_ovf_i8_un | @cil_conv_ovf_u | @cil_conv_ovf_u_un | + @cil_conv_ovf_u1 | @cil_conv_ovf_u1_un | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_ovf_u4 | @cil_conv_ovf_u4_un | @cil_conv_ovf_u8 | @cil_conv_ovf_u8_un | + @cil_conv_r4 | @cil_conv_r8 | @cil_conv_ovf_u2 | @cil_conv_ovf_u2_un | + @cil_conv_i | @cil_conv_u | @cil_conv_r_un; + +@cil_ldind = @cil_ldind_i | @cil_ldind_i1 | @cil_ldind_i2 | @cil_ldind_i4 | @cil_ldind_i8 | + @cil_ldind_r4 | @cil_ldind_r8 | @cil_ldind_ref | @cil_ldind_u1 | @cil_ldind_u2 | @cil_ldind_u4; + +@cil_stind = @cil_stind_i | @cil_stind_i1 | @cil_stind_i2 | @cil_stind_i4 | @cil_stind_i8 | + @cil_stind_r4 | @cil_stind_r8 | @cil_stind_ref; + +@cil_bitwise_operation = @cil_binary_bitwise_operation | @cil_unary_bitwise_operation; + +@cil_binary_bitwise_operation = @cil_and | @cil_or | @cil_xor | @cil_shr | @cil_shr | @cil_shr_un | @cil_shl; + +@cil_binary_arithmetic_operation = @cil_add | @cil_sub | @cil_mul | @cil_div | @cil_div_un | + @cil_rem | @cil_rem_un | @cil_add_ovf | @cil_add_ovf_un | @cil_mul_ovf | @cil_mul_ovf_un | + @cil_sub_ovf | @cil_sub_ovf_un; + +@cil_unary_bitwise_operation = @cil_not; + +@cil_binary_expr = @cil_binary_arithmetic_operation | @cil_binary_bitwise_operation | @cil_read_array | @cil_comparison_operation; + +@cil_unary_arithmetic_operation = @cil_neg; + +@cil_comparison_operation = @cil_cgt_un | @cil_ceq | @cil_cgt | @cil_clt | @cil_clt_un; + +// Elements that retrieve an address of something +@cil_read_ref = @cil_ldloca_s | @cil_ldarga_s | @cil_ldflda | @cil_ldsflda | @cil_ldelema; + +// CIL array instructions + +@cil_read_array = + @cil_ldelem | @cil_ldelema | @cil_ldelem_i1 | @cil_ldelem_ref | @cil_ldelem_i | + @cil_ldelem_i1 | @cil_ldelem_i2 | @cil_ldelem_i4 | @cil_ldelem_i8 | @cil_ldelem_r4 | + @cil_ldelem_r8 | @cil_ldelem_u1 | @cil_ldelem_u2 | @cil_ldelem_u4; + +@cil_write_array = @cil_stelem | @cil_stelem_ref | + @cil_stelem_i | @cil_stelem_i1 | @cil_stelem_i2 | @cil_stelem_i4 | @cil_stelem_i8 | + @cil_stelem_r4 | @cil_stelem_r8; + +@cil_throw_any = @cil_throw | @cil_rethrow; + +#keyset[impl, index] +cil_instruction( + unique int id: @cil_instruction, + int opcode: int ref, + int index: int ref, + int impl: @cil_method_implementation ref); + +cil_jump( + unique int instruction: @cil_jump ref, + int target: @cil_instruction ref); + +cil_access( + unique int instruction: @cil_instruction ref, + int target: @cil_accessible ref); + +cil_value( + unique int instruction: @cil_literal ref, + string value: string ref); + +#keyset[instruction, index] +cil_switch( + int instruction: @cil_switch ref, + int index: int ref, + int target: @cil_instruction ref); + +cil_instruction_location( + unique int id: @cil_instruction ref, + int loc: @location ref); + +cil_type_location( + int id: @cil_type ref, + int loc: @location ref); + +cil_method_location( + int id: @cil_method ref, + int loc: @location ref); + +@cil_namespace = @namespace; + +@cil_type_container = @cil_type | @cil_namespace | @cil_method; + +case @cil_type.kind of + 0 = @cil_valueorreftype +| 1 = @cil_typeparameter +| 2 = @cil_array_type +| 3 = @cil_pointer_type +; + +cil_type( + unique int id: @cil_type, + string name: string ref, + int kind: int ref, + int parent: @cil_type_container ref, + int sourceDecl: @cil_type ref); + +cil_pointer_type( + unique int id: @cil_pointer_type ref, + int pointee: @cil_type ref); + +cil_array_type( + unique int id: @cil_array_type ref, + int element_type: @cil_type ref, + int rank: int ref); + +cil_method( + unique int id: @cil_method, + string name: string ref, + int parent: @cil_type ref, + int return_type: @cil_type ref); + +cil_method_source_declaration( + unique int method: @cil_method ref, + int source: @cil_method ref); + +cil_method_implementation( + unique int id: @cil_method_implementation, + int method: @cil_method ref, + int location: @assembly ref); + +cil_implements( + int id: @cil_method ref, + int decl: @cil_method ref); + +#keyset[parent, name] +cil_field( + unique int id: @cil_field, + int parent: @cil_type ref, + string name: string ref, + int field_type: @cil_type ref); + +@cil_element = @cil_instruction | @cil_declaration | @cil_handler | @cil_attribute | @cil_namespace; +@cil_named_element = @cil_declaration | @cil_namespace; +@cil_declaration = @cil_variable | @cil_method | @cil_type | @cil_member; +@cil_accessible = @cil_declaration; +@cil_variable = @cil_field | @cil_stack_variable; +@cil_stack_variable = @cil_local_variable | @cil_parameter; +@cil_member = @cil_method | @cil_type | @cil_field | @cil_property | @cil_event; + +#keyset[method, index] +cil_parameter( + unique int id: @cil_parameter, + int method: @cil_method ref, + int index: int ref, + int param_type: @cil_type ref); + +cil_parameter_in(unique int id: @cil_parameter ref); +cil_parameter_out(unique int id: @cil_parameter ref); + +cil_setter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_getter(unique int prop: @cil_property ref, + int method: @cil_method ref); + +cil_adder(unique int event: @cil_event ref, + int method: @cil_method ref); + +cil_remover(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_raiser(unique int event: @cil_event ref, int method: @cil_method ref); + +cil_property( + unique int id: @cil_property, + int parent: @cil_type ref, + string name: string ref, + int property_type: @cil_type ref); + +#keyset[parent, name] +cil_event(unique int id: @cil_event, + int parent: @cil_type ref, + string name: string ref, + int event_type: @cil_type ref); + +#keyset[impl, index] +cil_local_variable( + unique int id: @cil_local_variable, + int impl: @cil_method_implementation ref, + int index: int ref, + int var_type: @cil_type ref); + +// CIL handlers (exception handlers etc). + +case @cil_handler.kind of + 0 = @cil_catch_handler +| 1 = @cil_filter_handler +| 2 = @cil_finally_handler +| 4 = @cil_fault_handler +; + +#keyset[impl, index] +cil_handler( + unique int id: @cil_handler, + int impl: @cil_method_implementation ref, + int index: int ref, + int kind: int ref, + int try_start: @cil_instruction ref, + int try_end: @cil_instruction ref, + int handler_start: @cil_instruction ref); + +cil_handler_filter( + unique int id: @cil_handler ref, + int filter_start: @cil_instruction ref); + +cil_handler_type( + unique int id: @cil_handler ref, + int catch_type: @cil_type ref); + +@cil_controlflow_node = @cil_entry_point | @cil_instruction; + +@cil_entry_point = @cil_method_implementation | @cil_handler; + +@cil_dataflow_node = @cil_instruction | @cil_variable | @cil_method; + +cil_method_stack_size( + unique int method: @cil_method_implementation ref, + int size: int ref); + +// CIL modifiers + +cil_public(int id: @cil_member ref); +cil_private(int id: @cil_member ref); +cil_protected(int id: @cil_member ref); +cil_internal(int id: @cil_member ref); +cil_static(int id: @cil_member ref); +cil_sealed(int id: @cil_member ref); +cil_virtual(int id: @cil_method ref); +cil_abstract(int id: @cil_member ref); +cil_class(int id: @cil_type ref); +cil_interface(int id: @cil_type ref); +cil_security(int id: @cil_member ref); +cil_requiresecobject(int id: @cil_method ref); +cil_specialname(int id: @cil_method ref); +cil_newslot(int id: @cil_method ref); + +cil_base_class(unique int id: @cil_type ref, int base: @cil_type ref); +cil_base_interface(int id: @cil_type ref, int base: @cil_type ref); +cil_enum_underlying_type(unique int id: @cil_type ref, int underlying: @cil_type ref); + +#keyset[unbound, index] +cil_type_parameter( + int unbound: @cil_member ref, + int index: int ref, + int param: @cil_typeparameter ref); + +#keyset[bound, index] +cil_type_argument( + int bound: @cil_member ref, + int index: int ref, + int t: @cil_type ref); + +// CIL type parameter constraints + +cil_typeparam_covariant(int tp: @cil_typeparameter ref); +cil_typeparam_contravariant(int tp: @cil_typeparameter ref); +cil_typeparam_class(int tp: @cil_typeparameter ref); +cil_typeparam_struct(int tp: @cil_typeparameter ref); +cil_typeparam_new(int tp: @cil_typeparameter ref); +cil_typeparam_constraint(int tp: @cil_typeparameter ref, int supertype: @cil_type ref); + +// CIL attributes + +cil_attribute( + unique int attributeid: @cil_attribute, + int element: @cil_declaration ref, + int constructor: @cil_method ref); + +#keyset[attribute_id, param] +cil_attribute_named_argument( + int attribute_id: @cil_attribute ref, + string param: string ref, + string value: string ref); + +#keyset[attribute_id, index] +cil_attribute_positional_argument( + int attribute_id: @cil_attribute ref, + int index: int ref, + string value: string ref); + + +// Common .Net data model covering both C# and CIL + +// Common elements +@dotnet_element = @element | @cil_element; +@dotnet_named_element = @named_element | @cil_named_element; +@dotnet_callable = @callable | @cil_method; +@dotnet_variable = @variable | @cil_variable; +@dotnet_field = @field | @cil_field; +@dotnet_parameter = @parameter | @cil_parameter; +@dotnet_declaration = @declaration | @cil_declaration; +@dotnet_member = @member | @cil_member; +@dotnet_event = @event | @cil_event; +@dotnet_property = @property | @cil_property | @indexer; + +// Common types +@dotnet_type = @type | @cil_type; +@dotnet_call = @call | @cil_call_any; +@dotnet_throw = @throw_element | @cil_throw_any; +@dotnet_valueorreftype = @cil_valueorreftype | @value_or_ref_type | @cil_array_type | @void_type; +@dotnet_typeparameter = @type_parameter | @cil_typeparameter; +@dotnet_array_type = @array_type | @cil_array_type; +@dotnet_pointer_type = @pointer_type | @cil_pointer_type; +@dotnet_type_parameter = @type_parameter | @cil_typeparameter; +@dotnet_generic = @dotnet_valueorreftype | @dotnet_callable; + +// Attributes +@dotnet_attribute = @attribute | @cil_attribute; + +// Expressions +@dotnet_expr = @expr | @cil_expr; + +// Literals +@dotnet_literal = @literal_expr | @cil_literal; +@dotnet_string_literal = @string_literal_expr | @cil_ldstr; +@dotnet_int_literal = @integer_literal_expr | @cil_ldc_i; +@dotnet_float_literal = @float_literal_expr | @cil_ldc_r; +@dotnet_null_literal = @null_literal_expr | @cil_ldnull; + +@metadata_entity = @cil_method | @cil_type | @cil_field | @cil_property | @field | @property | + @callable | @value_or_ref_type | @void_type; + +#keyset[entity, location] +metadata_handle(int entity : @metadata_entity ref, int location: @assembly ref, int handle: int ref) diff --git a/csharp/upgrades/TO_CHANGE/upgrade.properties b/csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/upgrade.properties similarity index 100% rename from csharp/upgrades/TO_CHANGE/upgrade.properties rename to csharp/upgrades/b93e202508f21bdf2e0d831e464c3b14187378cc/upgrade.properties From 3cf967458f2fb365187ef2837870920fc22b6f11 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Tue, 15 Dec 2020 14:28:51 +0100 Subject: [PATCH 3/5] Fix failing test --- csharp/ql/test/library-tests/csharp9/initOnlyProperty.expected | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/ql/test/library-tests/csharp9/initOnlyProperty.expected b/csharp/ql/test/library-tests/csharp9/initOnlyProperty.expected index 41c2113b3a1..8915b72cc42 100644 --- a/csharp/ql/test/library-tests/csharp9/initOnlyProperty.expected +++ b/csharp/ql/test/library-tests/csharp9/initOnlyProperty.expected @@ -1,3 +1,4 @@ +| AnonymousObjectCreation.cs:9:29:9:31 | set_Prop1 | set | | InitOnlyProperty.cs:12:42:12:45 | set_Prop0 | init | | InitOnlyProperty.cs:13:37:13:40 | set_Prop1 | init | | InitOnlyProperty.cs:14:37:14:39 | set_Prop2 | set | From 8fd409898a72db2f9d70dccbad4ea8a88b3c5586 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Tue, 15 Dec 2020 18:34:47 +0100 Subject: [PATCH 4/5] Add new stats file --- .../ql/src/semmlecode.csharp.dbscheme.stats | 6917 +++++++++-------- 1 file changed, 3524 insertions(+), 3393 deletions(-) diff --git a/csharp/ql/src/semmlecode.csharp.dbscheme.stats b/csharp/ql/src/semmlecode.csharp.dbscheme.stats index 397b39b64fb..a640d36f28a 100644 --- a/csharp/ql/src/semmlecode.csharp.dbscheme.stats +++ b/csharp/ql/src/semmlecode.csharp.dbscheme.stats @@ -1,7 +1,7 @@ @compilation -1095 +1097 @diagnostic @@ -9,7 +9,7 @@ @extractor_message -10135 +8300 @externalDefect @@ -25,7 +25,7 @@ @duplication -22719 +22765 @similarity @@ -33,31 +33,31 @@ @location_default -14069206 +14071874 @assembly -4195 +4203 @file -42436 +42521 @folder -16918 +16951 @namespace -21926 +21970 @namespace_declaration -19745 +19785 @using_namespace_directive -144149 +144437 @using_static_directive @@ -117,23 +117,23 @@ @enum_type -11943 +11967 @struct_type -49629 +49729 @class_type -304880 +305489 @interface_type -177985 +178340 @delegate_type -107490 +107704 @null_type @@ -141,7 +141,7 @@ @type_parameter -202452 +202856 @pointer_type @@ -149,11 +149,11 @@ @nullable_type -976 +979 @array_type -9116 +9134 @void_type @@ -165,7 +165,7 @@ @tuple_type -1781 +1784 @uint_ptr_type @@ -185,23 +185,23 @@ @typeref -234624 +235092 @attribute -748732 +750241 @type_mention -1266369 +1268897 @oblivious -1314 +1316 @not_annotated -618 +619 @annotated @@ -209,7 +209,7 @@ @type_parameter_constraints -610345 +611564 @modifier @@ -217,47 +217,47 @@ @property -423224 +424069 @indexer -17030 +17064 @getter -440021 +440899 @setter -127435 +127690 @event -15219 +15249 @add_event_accessor -15219 +15249 @remove_event_accessor -15219 +15249 @operator -12401 +12426 @method -1115829 +1118291 @constructor -277440 +277993 @destructor -442 +443 @local_function @@ -265,15 +265,15 @@ @addressable_field -370202 +370941 @constant -185081 +185451 @addressable_local_variable -162434 +162445 @local_constant @@ -281,71 +281,71 @@ @local_variable_ref -258 +259 @parameter -2415699 +2420755 @block_stmt -307825 +308440 @expr_stmt -366946 +367678 @return_stmt -95961 +96153 @using_block_stmt -1139 +1141 @var_decl_stmt -147905 +147916 @if_stmt -118884 +119121 @switch_stmt -3042 +3048 @while_stmt -4533 +4542 @do_stmt -998 +1000 @for_stmt -6949 +6963 @foreach_stmt -5348 +5359 @break_stmt -10886 +10908 @continue_stmt -2182 +2186 @goto_stmt -2693 +2698 @goto_case_stmt -347 +348 @goto_default_stmt @@ -353,7 +353,7 @@ @throw_stmt -74157 +74305 @yield_stmt @@ -361,7 +361,7 @@ @try_stmt -4314 +4323 @checked_stmt @@ -373,7 +373,7 @@ @lock_stmt -1656 +1659 @const_decl_stmt @@ -389,19 +389,19 @@ @fixed_stmt -1123 +1125 @label_stmt -1006 +1008 @catch -3431 +3438 @case_stmt -22392 +22436 @local_function_stmt @@ -413,11 +413,11 @@ @bool_literal_expr -69359 +69497 @int_literal_expr -751646 +754675 @long_literal_expr @@ -425,67 +425,67 @@ @double_literal_expr -852 +854 @string_literal_expr -411460 +412282 @null_literal_expr -107550 +107765 @local_variable_access_expr -524127 +524163 @parameter_access_expr -356709 +357421 @field_access_expr -459299 +460216 @property_access_expr -358847 +359563 @type_access_expr -346321 +346906 @typeof_expr -30025 +30085 @method_invocation_expr -547916 +548159 @cast_expr -262249 +262773 @object_creation_expr -62722 +62848 @array_creation_expr -178670 +179161 @array_init_expr -178499 +178985 @local_var_decl_expr -163738 +163751 @char_literal_expr -15861 +15892 @decimal_literal_expr @@ -493,59 +493,59 @@ @uint_literal_expr -2361 +2366 @ulong_literal_expr -381 +382 @float_literal_expr -445 +446 @this_access_expr -591393 +592573 @base_access_expr -2814 +2820 @method_access_expr -9226 +9230 @event_access_expr -429 +430 @indexer_access_expr -30735 +30797 @array_access_expr -19703 +19742 @delegate_invocation_expr -2134 +2139 @operator_invocation_expr -29964 +30001 @explicit_delegate_creation_expr -666 +668 @implicit_delegate_creation_expr -5105 +5115 @default_expr -6343 +6356 @plus_expr @@ -553,123 +553,123 @@ @minus_expr -7127 +7141 @bit_not_expr -739 +741 @log_not_expr -26365 +26417 @post_incr_expr -12537 +12562 @post_decr_expr -1735 +1738 @pre_incr_expr -1271 +1273 @pre_decr_expr -411 +412 @mul_expr -4615 +4625 @div_expr -1814 +1817 @rem_expr -715 +716 @add_expr -27817 +27873 @sub_expr -12812 +12838 @lshift_expr -4040 +4048 @rshift_expr -1760 +1764 @lt_expr -16259 +16291 @gt_expr -9565 +9584 @le_expr -3888 +3896 @ge_expr -6268 +6281 @eq_expr -53794 +53902 @ne_expr -37868 +37943 @bit_and_expr -6316 +6328 @bit_xor_expr -535 +536 @bit_or_expr -14955 +14984 @log_and_expr -20785 +20826 @log_or_expr -14047 +14076 @is_expr -6703 +6716 @as_expr -2753 +2758 @null_coalescing_expr -3674 +3682 @conditional_expr -9134 +9152 @simple_assign_expr -167083 +167416 @assign_add_expr @@ -677,7 +677,7 @@ @assign_sub_expr -1015 +1017 @assign_mul_expr @@ -693,7 +693,7 @@ @assign_and_expr -342 +343 @assign_xor_expr @@ -701,7 +701,7 @@ @assign_or_expr -1389 +1392 @assign_lshift_expr @@ -713,23 +713,23 @@ @object_init_expr -7680 +7695 @collection_init_expr -593 +594 @checked_expr -326 +327 @unchecked_expr -1418 +1421 @constructor_init_expr -5807 +5818 @add_event_expr @@ -745,7 +745,7 @@ @lambda_expr -48734 +48831 @anonymous_method_expr @@ -757,35 +757,35 @@ @dynamic_element_access_expr -330 +331 @dynamic_member_access_expr -6838 +6851 @pointer_indirection_expr -4049 +4058 @address_of_expr -1248 +1250 @sizeof_expr -1038 +1040 @await_expr -54711 +54820 @nameof_expr -15897 +15929 @interpolated_string_expr -3036 +3045 @unknown_expr @@ -793,7 +793,7 @@ @throw_expr -1539 +1542 @tuple_expr @@ -805,7 +805,7 @@ @ref_expr -562 +563 @discard_expr @@ -821,7 +821,7 @@ @switch_expr -517 +518 @recursive_pattern_expr @@ -837,15 +837,15 @@ @switch_case_expr -4341 +4350 @assign_coalesce_expr -542 +543 @suppress_nullable_warning_expr -14372 +14400 @namespace_access_expr @@ -877,19 +877,19 @@ @singlelinecomment -184285 +184653 @multilinecomment -22055 +22099 @xmldoccomment -203233 +203638 @commentblock -143959 +144246 @asp_close_tag @@ -929,7 +929,7 @@ @cil_nop -818334 +819968 @cil_break @@ -937,147 +937,147 @@ @cil_ldarg_0 -3966809 +3974727 @cil_ldarg_1 -1214082 +1216505 @cil_ldarg_2 -442936 +443820 @cil_ldarg_3 -208721 +209137 @cil_ldloc_0 -927287 +929138 @cil_ldloc_1 -492878 +493861 @cil_ldloc_2 -288108 +288683 @cil_ldloc_3 -191652 +192034 @cil_stloc_0 -523852 +524897 @cil_stloc_1 -259957 +260476 @cil_stloc_2 -197891 +198286 @cil_stloc_3 -138007 +138282 @cil_ldarg_s -263958 +264485 @cil_ldarga_s -74612 +74761 @cil_starg_s -37097 +37171 @cil_ldloc_s -684924 +686291 @cil_ldloca_s -627920 +629174 @cil_stloc_s -479834 +480791 @cil_ldnull -602451 +603653 @cil_ldc_i4_m1 -125936 +126187 @cil_ldc_i4_0 -624270 +625516 @cil_ldc_i4_1 -493617 +494603 @cil_ldc_i4_2 -120777 +121018 @cil_ldc_i4_3 -64017 +64144 @cil_ldc_i4_4 -58755 +58873 @cil_ldc_i4_5 -38601 +38678 @cil_ldc_i4_6 -23216 +23262 @cil_ldc_i4_7 -20709 +20750 @cil_ldc_i4_8 -33412 +33479 @cil_ldc_i4_s -422446 +423289 @cil_ldc_i4 -509781 +510799 @cil_ldc_i8 -4876 +4886 @cil_ldc_r4 -10240 +10260 @cil_ldc_r8 -10308 +10329 @cil_dup -840423 +842101 @cil_pop -255927 +256438 @cil_jmp @@ -1085,7 +1085,7 @@ @cil_call -2736062 +2741524 @cil_calli @@ -1093,95 +1093,95 @@ @cil_ret -1782925 +1786484 @cil_br_s -345136 +345825 @cil_brfalse_s -465047 +465976 @cil_brtrue_s -429858 +430716 @cil_beq_s -82098 +82262 @cil_bge_s -34858 +34927 @cil_bgt_s -16465 +16498 @cil_ble_s -29144 +29202 @cil_blt_s -60814 +60935 @cil_bne_un_s -102457 +102662 @cil_bge_un_s -2180 +2184 @cil_bgt_un_s -8717 +8734 @cil_ble_un_s -6108 +6120 @cil_blt_un_s -1465 +1467 @cil_br -95969 +96161 @cil_brfalse -32332 +32396 @cil_brtrue -27280 +27334 @cil_beq -21468 +21511 @cil_bge -1387 +1389 @cil_bgt -1460 +1463 @cil_ble -4633 +4642 @cil_blt -7918 +7934 @cil_bne_un -7222 +7237 @cil_bge_un @@ -1189,11 +1189,11 @@ @cil_bgt_un -691 +692 @cil_ble_un -1099 +1102 @cil_blt_un @@ -1201,7 +1201,7 @@ @cil_switch -23834 +23881 @cil_ldind_i1 @@ -1209,27 +1209,27 @@ @cil_ldind_u1 -5499 +5510 @cil_ldind_i2 -511 +512 @cil_ldind_u2 -2439 +2444 @cil_ldind_i4 -9758 +9778 @cil_ldind_u4 -1479 +1482 @cil_ldind_i8 -1966 +1970 @cil_ldind_i @@ -1237,59 +1237,59 @@ @cil_ldind_r4 -700 +702 @cil_ldind_r8 -262 +263 @cil_ldind_ref -6643 +6656 @cil_stind_ref -16903 +16937 @cil_stind_i1 -8507 +8524 @cil_stind_i2 -1373 +1376 @cil_stind_i4 -10342 +10363 @cil_stind_i8 -2341 +2345 @cil_stind_r4 -184 +185 @cil_stind_r8 -223 +224 @cil_add -223551 +223997 @cil_sub -85120 +85290 @cil_mul -29893 +29953 @cil_div -9106 +9124 @cil_div_un @@ -1297,79 +1297,79 @@ @cil_rem -3402 +3408 @cil_rem_un -228 +229 @cil_and -59223 +59341 @cil_or -22106 +22150 @cil_xor -22671 +22716 @cil_shl -18933 +18970 @cil_shr -9159 +9178 @cil_shr_un -26058 +26110 @cil_neg -2331 +2336 @cil_not -1455 +1458 @cil_conv_i1 -1382 +1385 @cil_conv_i2 -1445 +1448 @cil_conv_i4 -59665 +59785 @cil_conv_i8 -50194 +50294 @cil_conv_r4 -2462 +2467 @cil_conv_r8 -5271 +5281 @cil_conv_u4 -7816 +7832 @cil_conv_u8 -19507 +19546 @cil_callvirt -2046533 +2050618 @cil_cpobj @@ -1377,27 +1377,27 @@ @cil_ldobj -12630 +12655 @cil_ldstr -924994 +926841 @cil_newobj -655828 +657138 @cil_castclass -96884 +97078 @cil_isinst -56341 +56454 @cil_conv_r_un -262 +263 @cil_unbox @@ -1405,35 +1405,35 @@ @cil_throw -380506 +381265 @cil_ldfld -1673527 +1676868 @cil_ldflda -300135 +300734 @cil_stfld -1071066 +1073204 @cil_ldsfld -406569 +407381 @cil_ldsflda -2526 +2531 @cil_stsfld -130672 +130933 @cil_stobj -7008 +7022 @cil_conv_ovf_i1_un @@ -1477,19 +1477,19 @@ @cil_box -79689 +79848 @cil_newarr -111899 +112123 @cil_ldlen -55227 +55337 @cil_ldelema -9851 +9870 @cil_ldelem_i1 @@ -1497,27 +1497,27 @@ @cil_ldelem_u1 -15545 +15576 @cil_ldelem_i2 -428 +429 @cil_ldelem_u2 -6079 +6091 @cil_ldelem_i4 -17550 +17585 @cil_ldelem_u4 -19079 +19117 @cil_ldelem_i8 -11900 +11923 @cil_ldelem_i @@ -1529,11 +1529,11 @@ @cil_ldelem_r8 -457 +458 @cil_ldelem_ref -30643 +30704 @cil_stelem_i @@ -1541,19 +1541,19 @@ @cil_stelem_i1 -8775 +8792 @cil_stelem_i2 -8970 +8987 @cil_stelem_i4 -22782 +22828 @cil_stelem_i8 -9408 +9426 @cil_stelem_r4 @@ -1561,23 +1561,23 @@ @cil_stelem_r8 -476 +477 @cil_stelem_ref -362264 +362987 @cil_ldelem -2272 +2277 @cil_stelem -53518 +53625 @cil_unbox_any -14362 +14391 @cil_conv_ovf_i1 @@ -1585,11 +1585,11 @@ @cil_conv_ovf_u1 -111 +112 @cil_conv_ovf_i2 -77 +78 @cil_conv_ovf_u2 @@ -1601,7 +1601,7 @@ @cil_conv_ovf_u4 -77 +78 @cil_conv_ovf_i8 @@ -1625,23 +1625,23 @@ @cil_ldtoken -71181 +71323 @cil_conv_u2 -4331 +4340 @cil_conv_u1 -11238 +11260 @cil_conv_i -3655 +3662 @cil_conv_ovf_i -267 +268 @cil_conv_ovf_u @@ -1649,15 +1649,15 @@ @cil_add_ovf -1727 +1731 @cil_add_ovf_un -150 +151 @cil_mul_ovf -442 +443 @cil_mul_ovf_un @@ -1665,7 +1665,7 @@ @cil_sub_ovf -1109 +1111 @cil_sub_ovf_un @@ -1673,15 +1673,15 @@ @cil_endfinally -56794 +56907 @cil_leave -66737 +66871 @cil_leave_s -149065 +149362 @cil_stind_i @@ -1689,7 +1689,7 @@ @cil_conv_u -5797 +5809 @cil_arglist @@ -1697,31 +1697,31 @@ @cil_ceq -96787 +96980 @cil_cgt -11545 +11568 @cil_cgt_un -36639 +36712 @cil_clt -19484 +19523 @cil_clt_un -1311 +1314 @cil_ldftn -79781 +79940 @cil_ldvirtftn -1109 +1111 @cil_ldarg @@ -1749,11 +1749,11 @@ @cil_localloc -976 +978 @cil_endfilter -807 +809 @cil_unaligned @@ -1761,7 +1761,7 @@ @cil_volatile -8522 +8539 @cil_tail @@ -1769,11 +1769,11 @@ @cil_initobj -101586 +101789 @cil_constrained -25265 +25315 @cil_cpblk @@ -1785,11 +1785,11 @@ @cil_rethrow -3762 +3769 @cil_sizeof -1727 +1731 @cil_refanytype @@ -1801,80 +1801,80 @@ @cil_valueorreftype -594785 +595972 @cil_typeparameter -184619 +184987 @cil_array_type -14158 +14186 @cil_pointer_type -622 +624 @cil_method -2309946 +2314557 @cil_method_implementation -1724452 +1727894 @cil_field -1007580 +1009591 @cil_parameter -4542993 +4552061 @cil_property -379620 +380378 @cil_event -20826 +20867 @cil_local_variable -1149772 +1152067 @cil_catch_handler -43774 +43862 @cil_filter_handler -807 +809 @cil_finally_handler -55324 +55434 @cil_fault_handler -1469 +1472 @cil_attribute -328023 +328678 compilations -1095 +1097 id -1095 +1097 cwd -783 +785 @@ -1888,7 +1888,7 @@ 1 2 -1095 +1097 @@ -1904,12 +1904,12 @@ 1 2 -472 +473 2 3 -311 +312 @@ -1919,11 +1919,11 @@ compilation_args -4959 +4818 id -1095 +1097 num @@ -1931,7 +1931,7 @@ arg -1119 +1121 @@ -1945,12 +1945,12 @@ 4 5 -515 +668 5 6 -579 +429 @@ -1966,12 +1966,12 @@ 4 5 -515 +668 5 6 -579 +429 @@ -1985,8 +1985,8 @@ 12 -119 -120 +88 +89 4 @@ -2011,13 +2011,13 @@ 14 -107 -108 +88 +89 4 -119 -120 +138 +139 4 @@ -2034,10 +2034,10 @@ 1 2 -1095 +1097 -106 +88 226 24 @@ -2055,7 +2055,7 @@ 1 2 -1109 +1111 2 @@ -2070,19 +2070,19 @@ compilation_compiling_files -22568 +22613 id -1095 +1097 num -710 +712 file -22563 +22608 @@ -2288,7 +2288,7 @@ 11 12 -77 +78 12 @@ -2369,7 +2369,7 @@ 11 12 -77 +78 12 @@ -2420,7 +2420,7 @@ 1 2 -22559 +22604 2 @@ -2441,7 +2441,7 @@ 1 2 -22559 +22604 2 @@ -2456,19 +2456,19 @@ compilation_referencing_files -359003 +359719 id -1095 +1097 num -2740 +2745 file -3411 +3418 @@ -2542,7 +2542,7 @@ 369 564 -38 +39 @@ -2618,7 +2618,7 @@ 369 564 -38 +39 @@ -2644,7 +2644,7 @@ 7 8 -695 +697 8 @@ -2659,12 +2659,12 @@ 222 223 -637 +638 224 225 -710 +712 225 @@ -2685,62 +2685,62 @@ 1 4 -223 +219 4 -5 -4 - - -5 6 -608 +141 6 -18 -223 +7 +531 -18 -23 -223 +7 +21 +234 -23 -30 -219 +21 +28 +234 -30 -34 -219 +28 +33 +238 -34 -44 +33 +39 209 -44 -56 -233 +39 +51 +214 -56 +51 +61 +219 + + +61 63 -233 +165 63 -66 -223 +65 +195 -66 -70 -116 +65 +71 +141 @@ -2756,12 +2756,12 @@ 1 2 -525 +526 2 5 -257 +258 6 @@ -2781,12 +2781,12 @@ 10 23 -257 +258 23 122 -257 +258 124 @@ -2801,12 +2801,12 @@ 222 223 -481 +482 224 225 -715 +716 @@ -2822,62 +2822,62 @@ 1 2 -559 +560 2 5 -292 +277 5 6 -180 +336 6 -7 -311 +8 +268 -7 -11 -257 +8 +15 +277 -11 -19 -267 +15 +23 +307 -19 -24 -287 +23 +28 +273 -24 -29 -272 +28 +34 +263 -29 -58 -262 +35 +64 +268 -58 -63 -248 +64 +66 +263 -63 -65 -253 +66 +70 +292 -65 -74 -219 +70 +73 +29 @@ -2887,11 +2887,11 @@ compilation_time -7665 +7681 id -1095 +1097 num @@ -2903,7 +2903,7 @@ seconds -5494 +5730 @@ -2917,7 +2917,7 @@ 1 2 -1095 +1097 @@ -2933,7 +2933,7 @@ 7 8 -1095 +1097 @@ -2947,14 +2947,9 @@ 12 -6 -7 -4 - - 7 8 -1090 +1097 @@ -3000,8 +2995,8 @@ 12 -1129 -1130 +1175 +1176 4 @@ -3048,34 +3043,24 @@ 12 -151 -152 +163 +164 4 -165 -166 +174 +175 4 -178 -179 -4 - - -183 -184 -4 - - -224 -225 +181 +182 9 225 226 -4 +14 @@ -3091,22 +3076,22 @@ 1 2 -4356 +4545 2 3 -540 +668 3 5 -467 +477 5 7 -131 +39 @@ -3122,7 +3107,7 @@ 1 2 -5494 +5730 @@ -3138,17 +3123,17 @@ 1 2 -4604 +4886 2 3 -715 +731 3 5 -175 +112 @@ -4391,11 +4376,11 @@ extractor_messages -10135 +8300 id -10135 +8300 severity @@ -4407,19 +4392,19 @@ text -441 +12 entity -5762 +5343 location -7475 +6759 stack_trace -321 +299 @@ -4433,7 +4418,7 @@ 1 2 -10135 +8300 @@ -4449,7 +4434,7 @@ 1 2 -10135 +8300 @@ -4465,7 +4450,7 @@ 1 2 -10135 +8300 @@ -4481,7 +4466,7 @@ 1 2 -10135 +8300 @@ -4497,7 +4482,7 @@ 1 2 -10135 +8300 @@ -4513,7 +4498,7 @@ 1 2 -10135 +8300 @@ -4537,8 +4522,8 @@ 1 -10106 -10107 +8271 +8272 1 @@ -4574,8 +4559,8 @@ 2 -439 -440 +10 +11 1 @@ -4600,8 +4585,8 @@ 1 -5756 -5757 +5337 +5338 1 @@ -4626,8 +4611,8 @@ 1 -7463 -7464 +6747 +6748 1 @@ -4647,8 +4632,8 @@ 2 -320 -321 +298 +299 1 @@ -4663,8 +4648,8 @@ 12 -10135 -10136 +8300 +8301 1 @@ -4695,167 +4680,57 @@ 12 -441 -442 -1 - - - - - - -origin -entity - - -12 - - -5762 -5763 -1 - - - - - - -origin -location - - -12 - - -7475 -7476 -1 - - - - - - -origin -stack_trace - - -12 - - -321 -322 -1 - - - - - - -text -id - - -12 - - -1 -2 -30 - - -2 -3 -160 - - -3 -4 -203 - - -4 -11 -34 - - 12 -4452 -14 +13 +1 -text -severity - - -12 - - -1 -2 -441 - - - - - - -text -origin - - -12 - - -1 -2 -441 - - - - - - -text +origin entity 12 -1 -2 -432 - - -2 -3225 -9 +5343 +5344 +1 -text +origin location 12 -1 -2 -410 +6759 +6760 +1 + + + + + +origin +stack_trace + + +12 + -2 -4078 -31 +299 +300 +1 @@ -4863,32 +4738,6 @@ text -stack_trace - - -12 - - -1 -2 -202 - - -2 -3 -213 - - -3 -181 -26 - - - - - - -entity id @@ -4897,126 +4746,350 @@ 1 2 -4272 - - -2 -3 -957 - - -3 -7 -456 - - -7 -624 -77 - - - - - - -entity -severity - - -12 - - -1 -2 -5762 - - - - - - -entity -origin - - -12 - - -1 -2 -5762 - - - - - - -entity -text - - -12 - - -1 -2 -5753 - - -2 -3 -9 - - - - - - -entity -location - - -12 - - -1 -2 -5051 - - -2 -3 -495 - - -3 -249 -216 - - - - - - -entity -stack_trace - - -12 - - -1 -2 -5311 - - -2 -5 -442 +1 5 -17 +6 +1 + + +11 +12 +1 + + +24 +25 +1 + + +38 +39 +1 + + +87 +88 +1 + + +104 +105 +1 + + +216 +217 +1 + + +324 +325 +1 + + +626 +627 +1 + + +2413 +2414 +1 + + +4451 +4452 +1 + + + + + + +text +severity + + +12 + + +1 +2 +12 + + + + + + +text +origin + + +12 + + +1 +2 +12 + + + + + + +text +entity + + +12 + + +1 +2 +2 + + +2 +3 +1 + + +5 +6 +1 + + +11 +12 +1 + + +19 +20 +1 + + +47 +48 +1 + + +51 +52 +1 + + +69 +70 +1 + + +274 +275 +1 + + +1648 +1649 +1 + + +3224 +3225 +1 + + + + + + +text +location + + +12 + + +1 +2 +3 + + +11 +12 +1 + + +12 +13 +1 + + +19 +20 +1 + + +78 +79 +1 + + +104 +105 +1 + + +113 +114 +1 + + +324 +325 +1 + + +2019 +2020 +1 + + +4077 +4078 +1 + + + + + + +text +stack_trace + + +12 + + +1 +2 +4 + + +2 +3 +1 + + +4 +5 +2 + + +7 +8 +1 + + +10 +11 +1 + + +11 +12 +1 + + +74 +75 +1 + + +184 +185 +1 + + + + + + +entity +id + + +12 + + +1 +2 +4254 + + +2 +3 +797 + + +3 +384 +292 + + + + + + +entity +severity + + +12 + + +1 +2 +5343 + + + + + + +entity +origin + + +12 + + +1 +2 +5343 + + + + + + +entity +text + + +12 + + +1 +2 +5334 + + +2 +3 9 @@ -5024,6 +5097,53 @@ +entity +location + + +12 + + +1 +2 +4655 + + +2 +3 +480 + + +3 +67 +208 + + + + + + +entity +stack_trace + + +12 + + +1 +2 +5164 + + +2 +8 +179 + + + + + + location id @@ -5033,17 +5153,17 @@ 1 2 -5886 +5847 2 3 -1265 +911 -3 +631 632 -324 +1 @@ -5059,7 +5179,7 @@ 1 2 -7474 +6758 2 @@ -5080,7 +5200,7 @@ 1 2 -7475 +6759 @@ -5096,7 +5216,7 @@ 1 2 -7474 +6758 2 @@ -5117,7 +5237,7 @@ 1 2 -7474 +6758 3 @@ -5138,12 +5258,12 @@ 1 2 -6929 +6627 2 9 -546 +132 @@ -5159,52 +5279,52 @@ 1 2 -88 +90 2 3 -45 +38 3 4 -22 +19 4 -6 -24 +5 +17 -6 -8 +5 +7 23 -8 -13 +7 +11 26 -13 -26 +11 +21 25 -26 -54 -25 +21 +43 +23 -54 -166 -25 +51 +116 +23 -172 -632 -18 +120 +737 +15 @@ -5220,7 +5340,7 @@ 1 2 -320 +298 2 @@ -5241,7 +5361,7 @@ 1 2 -321 +299 @@ -5257,12 +5377,12 @@ 1 2 -303 +298 2 -166 -18 +3 +1 @@ -5278,47 +5398,47 @@ 1 2 -110 +109 2 3 -42 +37 3 4 -27 - - -4 -6 23 -6 -9 -29 +4 +5 +17 -9 -16 -25 +5 +7 +24 -16 -35 -26 +7 +11 +24 -35 -104 -25 +11 +22 +24 -109 -497 -14 +22 +68 +23 + + +72 +590 +18 @@ -5334,52 +5454,52 @@ 1 2 -104 +103 2 3 -41 +36 3 4 -24 - - -4 -6 -22 - - -6 -8 23 -8 -14 -28 +4 +5 +16 -14 -29 -25 +5 +7 +20 -29 -70 -25 +7 +11 +23 -70 -325 -25 +11 +20 +23 -343 -632 -4 +20 +51 +23 + + +51 +148 +23 + + +219 +737 +9 @@ -5389,19 +5509,19 @@ compilation_finished -1095 +1097 id -1095 +1097 cpu_seconds -939 +936 elapsed_seconds -1095 +1097 @@ -5415,7 +5535,7 @@ 1 2 -1095 +1097 @@ -5431,7 +5551,7 @@ 1 2 -1095 +1097 @@ -5447,12 +5567,12 @@ 1 2 -803 +794 2 3 -121 +126 3 @@ -5473,12 +5593,12 @@ 1 2 -803 +794 2 3 -121 +126 3 @@ -5499,7 +5619,7 @@ 1 2 -1095 +1097 @@ -5515,7 +5635,7 @@ 1 2 -1095 +1097 @@ -6177,19 +6297,19 @@ duplicateCode -22719 +22765 id -22719 +22765 relativePath -3801 +3808 equivClass -7003 +7017 @@ -6203,7 +6323,7 @@ 1 2 -22719 +22765 @@ -6219,7 +6339,7 @@ 1 2 -22719 +22765 @@ -6235,17 +6355,17 @@ 1 2 -1061 +1063 2 3 -564 +565 3 4 -423 +424 4 @@ -6260,7 +6380,7 @@ 6 8 -335 +336 8 @@ -6296,27 +6416,27 @@ 1 2 -1129 +1131 2 3 -520 +521 3 4 -442 +443 4 5 -233 +234 5 6 -228 +229 6 @@ -6331,7 +6451,7 @@ 10 14 -311 +312 14 @@ -6341,7 +6461,7 @@ 33 45 -38 +39 @@ -6357,27 +6477,27 @@ 2 3 -3762 +3769 3 4 -1143 +1146 4 5 -783 +785 5 6 -428 +429 6 8 -569 +570 8 @@ -6398,32 +6518,32 @@ 1 2 -676 +677 2 3 -3436 +3443 3 4 -1075 +1077 4 5 -676 +677 5 6 -384 +385 6 9 -579 +580 9 @@ -8506,11 +8626,11 @@ locations_default -14069206 +14071874 id -14069206 +14071874 file @@ -8544,7 +8664,7 @@ 1 2 -14069206 +14071874 @@ -8560,7 +8680,7 @@ 1 2 -14069206 +14071874 @@ -8576,7 +8696,7 @@ 1 2 -14069206 +14071874 @@ -8592,7 +8712,7 @@ 1 2 -14069206 +14071874 @@ -8608,7 +8728,7 @@ 1 2 -14069206 +14071874 @@ -8624,67 +8744,67 @@ 1 19 -491 +483 19 34 -470 +472 34 50 -494 +491 50 74 -471 +470 74 106 -470 +472 106 150 -476 +478 150 -209 -469 - - -209 -297 +208 471 +208 +297 +472 + + 297 -447 +446 +469 + + +446 +693 +469 + + +693 +1208 468 -447 -694 +1209 +2677 468 -694 -1207 -468 - - -1207 -2692 -468 - - -2693 +2691 42820 -487 +488 43087 @@ -8704,73 +8824,68 @@ 1 -11 -460 +12 +576 -11 -17 -485 +12 +19 +507 -17 -24 -496 +19 +27 +519 -24 -32 -490 +27 +35 +477 -32 -42 -495 +35 +46 +514 -42 -55 -475 +46 +62 +498 -55 -74 -495 +62 +82 +478 -74 -101 -474 +82 +114 +470 -101 -144 +114 +168 471 -144 -227 -469 - - -227 -408 -469 - - -408 -905 +168 +273 468 -908 -30336 -481 +273 +504 +479 -47451 +504 +1747 +469 + + +1749 143014 -3 +305 @@ -8791,52 +8906,52 @@ 7 13 -509 +499 13 19 -488 +491 19 26 -478 +481 26 34 -523 +516 34 43 -495 +500 43 53 -481 +484 53 64 -477 +479 64 76 -481 +479 76 91 -473 +474 91 112 -474 +476 112 @@ -8862,7 +8977,7 @@ 1 12 -516 +515 12 @@ -8877,52 +8992,57 @@ 25 34 -493 +492 34 -45 -537 +44 +468 -45 -59 -486 +44 +56 +477 -59 -80 -478 +56 +76 +468 -80 -110 +76 +104 470 -110 -157 +104 +146 471 -157 -256 -470 +146 +231 +469 -256 -468 +231 +411 +469 + + +411 +884 468 -468 -1222 -468 +888 +46288 +508 -1222 +55259 171760 -421 +3 @@ -8938,12 +9058,12 @@ 1 15 -497 +487 15 23 -474 +477 23 @@ -8953,27 +9073,27 @@ 32 43 -507 +509 43 54 -530 +529 54 66 -484 +488 66 77 -472 +469 77 91 -476 +480 91 @@ -8983,17 +9103,17 @@ 105 123 -485 +482 123 148 -468 +470 148 186 -469 +471 186 @@ -9068,7 +9188,7 @@ 301 -10739 +10783 9050 @@ -9212,12 +9332,12 @@ 4 6 -13946 +13945 6 35 -12404 +12405 35 @@ -9348,17 +9468,17 @@ 490 -5411 +5416 110 -5446 -74932 +5448 +74973 110 -76023 -2221113 +76216 +2221250 24 @@ -9404,21 +9524,21 @@ 58 -193 +194 110 195 -1096 +1098 110 -1109 -3845 +1112 +3851 110 -3880 +3881 6230 8 @@ -9649,12 +9769,12 @@ 9 51 -14737 +14736 51 64 -13404 +13405 64 @@ -9664,7 +9784,7 @@ 109 170 -13424 +13423 170 @@ -9673,8 +9793,8 @@ 277 -10644 -9488 +10669 +9489 @@ -9948,16 +10068,16 @@ 1126 -9597 +9599 124 -9615 -82613 +9617 +82628 124 -82670 +82672 908062 42 @@ -10013,8 +10133,8 @@ 124 -715 -3686 +716 +3687 124 @@ -10223,11 +10343,11 @@ numlines -4585449 +4585682 element_id -4585442 +4585675 num_lines @@ -10253,7 +10373,7 @@ 1 2 -4585435 +4585668 2 @@ -10274,7 +10394,7 @@ 1 2 -4585435 +4585668 2 @@ -10295,7 +10415,7 @@ 1 2 -4585438 +4585671 2 @@ -10483,7 +10603,7 @@ 52 -1614447 +1614483 83 @@ -10621,7 +10741,7 @@ 215 -4548962 +4549193 19 @@ -10724,27 +10844,27 @@ assemblies -4195 +4203 id -4195 +4203 file -4195 +4203 fullname -3436 +3443 name -3168 +3174 version -369 +370 @@ -10758,7 +10878,7 @@ 1 2 -4195 +4203 @@ -10774,7 +10894,7 @@ 1 2 -4195 +4203 @@ -10790,7 +10910,7 @@ 1 2 -4195 +4203 @@ -10806,7 +10926,7 @@ 1 2 -4195 +4203 @@ -10822,7 +10942,7 @@ 1 2 -4195 +4203 @@ -10838,7 +10958,7 @@ 1 2 -4195 +4203 @@ -10854,7 +10974,7 @@ 1 2 -4195 +4203 @@ -10870,7 +10990,7 @@ 1 2 -4195 +4203 @@ -10886,12 +11006,12 @@ 1 2 -2676 +2682 2 3 -759 +760 @@ -10907,12 +11027,12 @@ 1 2 -2676 +2682 2 3 -759 +760 @@ -10928,7 +11048,7 @@ 1 2 -3436 +3443 @@ -10944,7 +11064,7 @@ 1 2 -3436 +3443 @@ -10960,12 +11080,12 @@ 1 2 -2185 +2189 2 3 -939 +941 3 @@ -10986,12 +11106,12 @@ 1 2 -2185 +2189 2 3 -939 +941 3 @@ -11012,12 +11132,12 @@ 1 2 -2944 +2950 2 4 -223 +224 @@ -11033,12 +11153,12 @@ 1 2 -2944 +2950 2 4 -223 +224 @@ -11212,23 +11332,23 @@ files -42436 +42521 id -42436 +42521 name -42436 +42521 simple -22919 +22964 ext -38 +39 fromSource @@ -11246,7 +11366,7 @@ 1 2 -42436 +42521 @@ -11262,7 +11382,7 @@ 1 2 -42436 +42521 @@ -11278,7 +11398,7 @@ 1 2 -42436 +42521 @@ -11294,7 +11414,7 @@ 1 2 -42436 +42521 @@ -11310,7 +11430,7 @@ 1 2 -42436 +42521 @@ -11326,7 +11446,7 @@ 1 2 -42436 +42521 @@ -11342,7 +11462,7 @@ 1 2 -42436 +42521 @@ -11358,7 +11478,7 @@ 1 2 -42436 +42521 @@ -11374,12 +11494,12 @@ 1 2 -21512 +21555 2 154 -1406 +1409 @@ -11395,12 +11515,12 @@ 1 2 -21512 +21555 2 154 -1406 +1409 @@ -11416,12 +11536,12 @@ 1 2 -22130 +22174 2 5 -788 +790 @@ -11437,7 +11557,7 @@ 1 2 -22919 +22964 @@ -11601,7 +11721,7 @@ 1 2 -38 +39 @@ -11675,19 +11795,19 @@ folders -16918 +16951 id -16918 +16951 name -14703 +14732 simple -2769 +2774 @@ -11701,7 +11821,7 @@ 1 2 -16918 +16951 @@ -11717,7 +11837,7 @@ 1 2 -16918 +16951 @@ -11733,7 +11853,7 @@ 1 2 -14703 +14732 @@ -11749,12 +11869,12 @@ 1 2 -12489 +12513 2 3 -2214 +2218 @@ -11770,12 +11890,12 @@ 1 2 -1815 +1819 2 3 -379 +380 3 @@ -11806,12 +11926,12 @@ 1 2 -1815 +1819 2 3 -379 +380 3 @@ -11836,15 +11956,15 @@ containerparent -57130 +57244 parent -14703 +14732 child -57130 +57244 @@ -11858,37 +11978,37 @@ 1 2 -8244 +8261 2 3 -1932 +1936 3 4 -769 +770 4 5 -968 +970 5 9 -1104 +1107 9 18 -1138 +1141 18 171 -545 +546 @@ -11904,7 +12024,7 @@ 1 2 -57130 +57244 @@ -11914,11 +12034,11 @@ file_extraction_mode -26759 +26812 file -26759 +26812 mode @@ -11936,7 +12056,7 @@ 1 2 -26759 +26812 @@ -11962,15 +12082,15 @@ namespaces -21926 +21970 id -21926 +21970 name -4886 +4896 @@ -11984,7 +12104,7 @@ 1 2 -21926 +21970 @@ -12005,7 +12125,7 @@ 2 3 -3489 +3496 3 @@ -12015,17 +12135,17 @@ 4 5 -622 +624 6 10 -369 +370 10 101 -369 +370 110 @@ -12040,15 +12160,15 @@ namespace_declarations -19745 +19785 id -19745 +19785 namespace_id -3883 +3891 @@ -12062,7 +12182,7 @@ 1 2 -19745 +19785 @@ -12078,42 +12198,42 @@ 1 2 -1396 +1399 2 3 -798 +799 3 4 -413 +414 4 5 -306 +307 5 6 -223 +224 6 9 -330 +331 9 17 -301 +302 17 996 -111 +112 @@ -12123,15 +12243,15 @@ namespace_declaration_location -19745 +19785 id -19745 +19785 loc -19745 +19785 @@ -12145,7 +12265,7 @@ 1 2 -19745 +19785 @@ -12161,7 +12281,7 @@ 1 2 -19745 +19785 @@ -12171,15 +12291,15 @@ parent_namespace -776504 +778054 child_id -776504 +778054 namespace_id -13545 +13572 @@ -12193,7 +12313,7 @@ 1 2 -776504 +778054 @@ -12209,52 +12329,52 @@ 1 2 -3324 +3330 2 3 -1625 +1628 3 4 -1026 +1029 4 5 -915 +916 5 7 -1250 +1253 7 10 -1090 +1092 10 15 -1138 +1141 15 23 -1061 +1063 23 51 -1026 +1029 51 835 -1017 +1019 900 @@ -12269,15 +12389,15 @@ parent_namespace_declaration -88240 +88416 child_id -87724 +87899 namespace_id -19745 +19785 @@ -12291,12 +12411,12 @@ 1 2 -87573 +87748 2 60 -150 +151 @@ -12312,27 +12432,27 @@ 1 2 -13769 +13796 2 9 -1713 +1716 9 13 -1275 +1277 13 16 -1426 +1428 16 32 -1508 +1511 32 @@ -12347,15 +12467,15 @@ using_namespace_directives -144149 +144437 id -144149 +144437 namespace_id -4224 +4233 @@ -12369,7 +12489,7 @@ 1 2 -144149 +144437 @@ -12385,17 +12505,17 @@ 1 2 -1494 +1497 2 3 -472 +473 3 4 -296 +297 4 @@ -12410,7 +12530,7 @@ 8 14 -335 +336 14 @@ -12528,15 +12648,15 @@ using_directive_location -144207 +144495 id -144207 +144495 loc -144163 +144451 @@ -12550,7 +12670,7 @@ 1 2 -144207 +144495 @@ -12566,7 +12686,7 @@ 1 2 -144120 +144407 2 @@ -12581,11 +12701,11 @@ types -866545 +868275 id -866545 +868275 kind @@ -12593,7 +12713,7 @@ name -366595 +367327 @@ -12607,7 +12727,7 @@ 1 2 -866545 +868275 @@ -12623,7 +12743,7 @@ 1 2 -866545 +868275 @@ -12721,17 +12841,17 @@ 1 2 -324378 +325026 2 5 -28818 +28875 5 6356 -13399 +13425 @@ -12747,12 +12867,12 @@ 1 2 -365160 +365888 2 4 -1435 +1438 @@ -12762,15 +12882,15 @@ typerefs -234624 +235092 id -234624 +235092 name -176856 +177209 @@ -12784,7 +12904,7 @@ 1 2 -234624 +235092 @@ -12800,17 +12920,17 @@ 1 2 -162318 +162642 2 7 -13472 +13499 7 2183 -1065 +1068 @@ -12820,15 +12940,15 @@ typeref_type -234444 +234911 id -234444 +234911 typeId -234444 +234911 @@ -12842,7 +12962,7 @@ 1 2 -234444 +234911 @@ -12858,7 +12978,7 @@ 1 2 -234444 +234911 @@ -12868,11 +12988,11 @@ array_element_type -9116 +9134 array -9116 +9134 dimension @@ -12884,7 +13004,7 @@ element -9106 +9124 @@ -12898,7 +13018,7 @@ 1 2 -9116 +9134 @@ -12914,7 +13034,7 @@ 1 2 -9116 +9134 @@ -12930,7 +13050,7 @@ 1 2 -9116 +9134 @@ -13072,7 +13192,7 @@ 1 2 -9096 +9114 2 @@ -13093,7 +13213,7 @@ 1 2 -9106 +9124 @@ -13109,7 +13229,7 @@ 1 2 -9096 +9114 2 @@ -13124,15 +13244,15 @@ nullable_underlying_type -976 +979 nullable -976 +979 underlying -976 +979 @@ -13146,7 +13266,7 @@ 1 2 -976 +979 @@ -13162,7 +13282,7 @@ 1 2 -976 +979 @@ -13220,15 +13340,15 @@ enum_underlying_type -11943 +11967 enum_id -11943 +11967 underlying_type_id -38 +39 @@ -13242,7 +13362,7 @@ 1 2 -11943 +11967 @@ -13298,15 +13418,15 @@ delegate_return_type -107475 +107690 delegate_id -107475 +107690 return_type_id -55470 +55581 @@ -13320,7 +13440,7 @@ 1 2 -107475 +107690 @@ -13336,12 +13456,12 @@ 1 2 -52160 +52264 2 4178 -3309 +3316 @@ -13351,15 +13471,15 @@ extend -323254 +323899 sub -323254 +323899 super -31543 +31606 @@ -13373,7 +13493,7 @@ 1 2 -323254 +323899 @@ -13389,22 +13509,22 @@ 1 2 -22612 +22657 2 3 -3976 +3984 3 5 -2414 +2418 5 70 -2375 +2379 70 @@ -13419,15 +13539,15 @@ implement -541237 +542318 sub -226189 +226640 super -122456 +122701 @@ -13441,27 +13561,27 @@ 1 2 -100700 +100901 2 3 -57003 +57117 3 4 -36084 +36156 4 7 -18957 +18995 7 21 -13442 +13469 @@ -13477,27 +13597,27 @@ 1 2 -66903 +67036 2 3 -29762 +29821 3 4 -10240 +10260 4 6 -8687 +8705 6 21807 -6862 +6876 @@ -13507,15 +13627,15 @@ type_location -553293 +554397 id -466629 +467561 loc -29854 +29914 @@ -13529,17 +13649,17 @@ 1 2 -407095 +407907 2 3 -39204 +39282 3 638 -20329 +20370 @@ -13555,17 +13675,17 @@ 1 2 -25985 +26037 2 26 -2268 +2272 26 12195 -1601 +1604 @@ -13575,15 +13695,15 @@ tuple_underlying_type -1781 +1784 tuple -1781 +1784 struct -1138 +1141 @@ -13597,7 +13717,7 @@ 1 2 -1781 +1784 @@ -13613,12 +13733,12 @@ 1 2 -642 +643 2 3 -423 +424 3 @@ -13633,11 +13753,11 @@ tuple_element -6784 +6798 tuple -1776 +1780 index @@ -13645,7 +13765,7 @@ field -6784 +6798 @@ -13664,7 +13784,7 @@ 2 3 -1134 +1136 3 @@ -13710,7 +13830,7 @@ 2 3 -1134 +1136 3 @@ -13983,7 +14103,7 @@ 1 2 -6784 +6798 @@ -13999,7 +14119,7 @@ 1 2 -6784 +6798 @@ -14009,19 +14129,19 @@ attributes -748732 +750241 id -748732 +750241 type_id -1684 +1687 target -428744 +429609 @@ -14035,7 +14155,7 @@ 1 2 -748732 +750241 @@ -14051,7 +14171,7 @@ 1 2 -748732 +750241 @@ -14067,12 +14187,12 @@ 1 2 -184 +185 2 3 -194 +195 3 @@ -14126,7 +14246,7 @@ 5204 -41857 +41859 19 @@ -14143,7 +14263,7 @@ 1 2 -311 +312 2 @@ -14197,8 +14317,8 @@ 562 -39377 -116 +39379 +117 @@ -14214,17 +14334,17 @@ 1 2 -365306 +366040 2 3 -48773 +48875 3 957 -14664 +14693 @@ -14240,17 +14360,17 @@ 1 2 -394499 +395296 2 15 -33422 +33489 15 20 -822 +824 @@ -14260,15 +14380,15 @@ attribute_location -816740 +818385 id -748732 +750241 loc -72276 +72420 @@ -14282,12 +14402,12 @@ 1 2 -680724 +682097 2 3 -68008 +68143 @@ -14303,12 +14423,12 @@ 1 2 -68076 +68212 4 26710 -4200 +4208 @@ -14318,19 +14438,19 @@ type_mention -1266369 +1268897 id -1266369 +1268897 type_id -34380 +34449 parent -1026360 +1028409 @@ -14344,7 +14464,7 @@ 1 2 -1266369 +1268897 @@ -14360,7 +14480,7 @@ 1 2 -1266369 +1268897 @@ -14376,52 +14496,52 @@ 1 2 -4953 +4963 2 3 -6782 +6795 3 4 -3377 +3383 4 5 -4017 +4025 5 6 -2092 +2096 6 8 -2897 +2903 8 12 -2796 +2802 12 20 -2609 +2614 20 51 -2579 +2584 51 82736 -2274 +2279 @@ -14437,52 +14557,52 @@ 1 2 -9445 +9464 2 3 -5690 +5701 3 4 -3304 +3310 4 5 -2994 +3000 5 6 -1943 +1946 6 8 -2508 +2513 8 13 -2755 +2760 13 29 -2624 +2629 29 206 -2581 +2586 206 67615 -531 +532 @@ -14498,17 +14618,17 @@ 1 2 -869001 +870735 2 3 -137052 +137326 3 342 -20306 +20347 @@ -14524,12 +14644,12 @@ 1 2 -1005727 +1007734 2 22 -20633 +20674 @@ -14539,15 +14659,15 @@ type_mention_location -1266369 +1268897 id -1266369 +1268897 loc -1137201 +1139473 @@ -14561,7 +14681,7 @@ 1 2 -1266369 +1268897 @@ -14577,12 +14697,12 @@ 1 2 -1074850 +1076995 2 199 -62351 +62478 @@ -14592,11 +14712,11 @@ type_annotation -50890 +50992 id -50890 +50992 annotation @@ -14614,7 +14734,7 @@ 1 2 -50890 +50992 @@ -14650,11 +14770,11 @@ nullability -1995 +1999 nullability -1995 +1999 kind @@ -14672,7 +14792,7 @@ 1 2 -1995 +1999 @@ -14708,11 +14828,11 @@ nullability_parent -6273 +6286 nullability -520 +521 index @@ -14720,7 +14840,7 @@ parent -1980 +1984 @@ -14734,12 +14854,12 @@ 1 2 -340 +341 2 3 -116 +117 3 @@ -14780,12 +14900,12 @@ 4 5 -38 +39 5 8 -38 +39 8 @@ -14963,12 +15083,12 @@ 1 2 -593 +594 2 3 -1226 +1228 3 @@ -14989,12 +15109,12 @@ 1 2 -496 +497 2 3 -720 +721 3 @@ -15014,12 +15134,12 @@ 8 15 -155 +156 15 22 -38 +39 @@ -15029,15 +15149,15 @@ type_nullability -4603538 +4610045 id -4529161 +4535598 nullability -964 +965 @@ -15051,12 +15171,12 @@ 1 2 -4463621 +4469988 2 9 -65540 +65610 @@ -15077,37 +15197,37 @@ 2 3 -142 +144 3 4 -57 +55 4 5 -69 +70 5 7 -83 +85 7 10 -66 +64 10 14 -75 +74 14 23 -77 +78 23 @@ -15116,18 +15236,18 @@ 45 -123 -74 - - -123 -4618 +122 73 -5092 -3680271 -10 +122 +4134 +73 + + +4645 +3682170 +11 @@ -15137,11 +15257,11 @@ expr_flowstate -2987557 +2993545 id -2987557 +2993545 state @@ -15159,7 +15279,7 @@ 1 2 -2987557 +2993545 @@ -15173,13 +15293,13 @@ 12 -205765 -205766 +205783 +205784 1 -2254377 -2254378 +2254379 +2254380 1 @@ -15190,11 +15310,11 @@ type_parameters -202540 +202944 id -202540 +202944 index @@ -15202,7 +15322,7 @@ generic_id -103630 +103837 variance @@ -15220,7 +15340,7 @@ 1 2 -202540 +202944 @@ -15236,7 +15356,7 @@ 1 2 -202540 +202944 @@ -15252,7 +15372,7 @@ 1 2 -202540 +202944 @@ -15510,7 +15630,7 @@ 3 4 -77 +78 @@ -15526,22 +15646,22 @@ 1 2 -80521 +80682 2 3 -10766 +10787 3 11 -8342 +8358 11 22 -4000 +4008 @@ -15557,22 +15677,22 @@ 1 2 -80521 +80682 2 3 -10766 +10787 3 11 -8342 +8358 11 22 -4000 +4008 @@ -15588,12 +15708,12 @@ 1 2 -103479 +103686 2 3 -150 +151 @@ -15681,11 +15801,11 @@ type_arguments -643305 +644589 id -273054 +273599 index @@ -15693,7 +15813,7 @@ constructed_id -412580 +413403 @@ -15707,17 +15827,17 @@ 1 2 -234492 +234960 2 3 -37087 +37161 3 21 -1474 +1477 @@ -15733,27 +15853,27 @@ 1 2 -173804 +174151 2 3 -56429 +56541 3 5 -20553 +20594 5 23 -20636 +20677 23 2800 -1630 +1633 @@ -15981,17 +16101,17 @@ 1 2 -289836 +290415 2 3 -96159 +96351 3 22 -26584 +26637 @@ -16007,17 +16127,17 @@ 1 2 -287675 +288249 2 3 -97157 +97351 3 22 -27747 +27802 @@ -16027,15 +16147,15 @@ constructed_generic -412580 +413403 constructed -412580 +413403 generic -8570 +8588 @@ -16049,7 +16169,7 @@ 1 2 -412580 +413403 @@ -16065,42 +16185,42 @@ 1 2 -3441 +3447 2 3 -1153 +1155 3 4 -618 +619 4 6 -652 +653 6 11 -725 +726 11 26 -647 +648 26 63 -657 +658 63 2866 -647 +648 2964 @@ -16115,15 +16235,15 @@ type_parameter_constraints -610345 +611564 id -610345 +611564 param_id -202452 +202856 @@ -16137,7 +16257,7 @@ 1 2 -610345 +611564 @@ -16153,22 +16273,22 @@ 1 2 -164099 +164427 2 3 -17672 +17707 3 11 -16577 +16610 11 2108 -4102 +4111 @@ -16214,11 +16334,11 @@ general_type_parameter_constraints -118962 +119012 id -68393 +68415 kind @@ -16236,12 +16356,12 @@ 1 2 -17824 +17818 2 3 -50569 +50597 @@ -16260,23 +16380,23 @@ 1 -440 -441 +442 +443 1 -5904 -5905 +5903 +5904 1 -50448 -50449 +50476 +50477 1 -62166 -62167 +62187 +62188 1 @@ -16287,15 +16407,15 @@ specific_type_parameter_constraints -57187 +57191 id -56336 +56337 base_id -1283 +1286 @@ -16309,12 +16429,12 @@ 1 2 -55533 +55531 2 5 -803 +806 @@ -16335,27 +16455,27 @@ 2 3 -213 +215 3 4 -76 +77 4 5 -97 +100 5 6 -58 +54 6 7 -115 +116 7 @@ -16389,7 +16509,7 @@ 204 -8421 +8422 41 @@ -16400,15 +16520,15 @@ specific_type_parameter_nullability -39912 +39909 id -39677 +39671 base_id -924 +927 nullability @@ -16426,12 +16546,12 @@ 1 2 -39442 +39433 2 3 -235 +238 @@ -16447,7 +16567,7 @@ 1 2 -39677 +39671 @@ -16468,27 +16588,27 @@ 2 3 -200 +202 3 4 -54 +55 4 5 -49 +52 5 6 -52 +47 6 7 -79 +81 7 @@ -16498,12 +16618,12 @@ 10 12 -55 +53 12 16 -69 +71 16 @@ -16522,7 +16642,7 @@ 93 -6982 +6983 56 @@ -16539,7 +16659,7 @@ 1 2 -892 +895 2 @@ -16623,8 +16743,8 @@ 1 -38750 -38751 +38744 +38745 1 @@ -16679,8 +16799,8 @@ 1 -847 -848 +850 +851 1 @@ -16739,11 +16859,11 @@ has_modifiers -5491690 +5502891 id -3687943 +3695539 mod_id @@ -16761,17 +16881,17 @@ 1 2 -2019579 +2023840 2 3 -1534819 +1537888 3 5 -133543 +133810 @@ -16830,8 +16950,8 @@ 4 -30651 -30652 +30699 +30700 4 @@ -16845,8 +16965,8 @@ 4 -63916 -63917 +63917 +63918 4 @@ -16877,26 +16997,26 @@ compiler_generated -135743 +136014 id -135743 +136014 exprorstmt_name -3700 +3707 parent_id -3700 +3707 name -365 +366 @@ -16910,7 +17030,7 @@ 1 2 -3700 +3707 @@ -16926,7 +17046,7 @@ 2 3 -106 +107 3 @@ -16976,19 +17096,19 @@ nested_types -111851 +112074 id -111851 +112074 declaring_type_id -40567 +40648 unbound_id -81056 +81218 @@ -17002,7 +17122,7 @@ 1 2 -111851 +112074 @@ -17018,7 +17138,7 @@ 1 2 -111851 +112074 @@ -17034,32 +17154,32 @@ 1 2 -23469 +23516 2 3 -6332 +6344 3 4 -3226 +3233 4 7 -3353 +3360 7 12 -3090 +3096 12 262 -1095 +1097 @@ -17075,32 +17195,32 @@ 1 2 -23503 +23550 2 3 -6414 +6427 3 4 -3144 +3150 4 7 -3382 +3389 7 12 -3076 +3082 12 206 -1046 +1048 @@ -17116,12 +17236,12 @@ 1 2 -78044 +78199 2 415 -3012 +3018 @@ -17137,12 +17257,12 @@ 1 2 -78783 +78941 2 415 -2272 +2277 @@ -17152,27 +17272,27 @@ properties -423224 +424069 id -423224 +424069 name -84298 +84466 declaring_type_id -116289 +116522 type_id -52087 +52191 unbound_id -333601 +334267 @@ -17186,7 +17306,7 @@ 1 2 -423224 +424069 @@ -17202,7 +17322,7 @@ 1 2 -423224 +424069 @@ -17218,7 +17338,7 @@ 1 2 -423224 +424069 @@ -17234,7 +17354,7 @@ 1 2 -423224 +424069 @@ -17250,32 +17370,32 @@ 1 2 -50715 +50816 2 3 -13983 +14011 3 4 -5748 +5759 4 7 -6643 +6656 7 49 -6332 +6344 49 2611 -876 +877 @@ -17291,32 +17411,32 @@ 1 2 -50715 +50816 2 3 -14051 +14079 3 4 -5733 +5744 4 7 -6677 +6691 7 51 -6327 +6339 51 2578 -793 +794 @@ -17332,17 +17452,17 @@ 1 2 -72782 +72928 2 3 -6925 +6939 3 524 -4589 +4598 @@ -17358,32 +17478,32 @@ 1 2 -51143 +51245 2 3 -14246 +14274 3 4 -5733 +5744 4 7 -6439 +6452 7 68 -6322 +6335 68 2018 -413 +414 @@ -17399,42 +17519,42 @@ 1 2 -39355 +39434 2 3 -29845 +29904 3 4 -10892 +10914 4 5 -7836 +7851 5 6 -7125 +7139 6 8 -9320 +9339 8 16 -9559 +9578 16 250 -2355 +2360 @@ -17450,42 +17570,42 @@ 1 2 -43862 +43949 2 3 -25416 +25466 3 4 -10887 +10909 4 5 -7855 +7871 5 6 -7140 +7154 6 8 -9276 +9295 8 14 -8736 +8753 14 250 -3114 +3121 @@ -17501,32 +17621,32 @@ 1 2 -45415 +45505 2 3 -32590 +32655 3 4 -13827 +13855 4 5 -7539 +7554 5 7 -9374 +9392 7 48 -7544 +7559 @@ -17542,42 +17662,42 @@ 1 2 -39355 +39434 2 3 -29845 +29904 3 4 -10892 +10914 4 5 -7836 +7851 5 6 -7125 +7139 6 8 -9320 +9339 8 16 -9559 +9578 16 250 -2355 +2360 @@ -17593,27 +17713,27 @@ 1 2 -31392 +31455 2 3 -10770 +10792 3 5 -4628 +4637 5 21 -3942 +3950 21 12516 -1353 +1355 @@ -17629,17 +17749,17 @@ 1 2 -44042 +44130 2 3 -4395 +4403 3 3289 -3650 +3657 @@ -17655,27 +17775,27 @@ 1 2 -32575 +32640 2 3 -10474 +10494 3 5 -4419 +4428 5 33 -3908 +3916 33 6176 -710 +712 @@ -17691,27 +17811,27 @@ 1 2 -31534 +31596 2 3 -10902 +10924 3 5 -4662 +4672 5 22 -3908 +3916 22 10632 -1080 +1082 @@ -17727,12 +17847,12 @@ 1 2 -328432 +329088 2 705 -5168 +5179 @@ -17748,7 +17868,7 @@ 1 2 -333601 +334267 @@ -17764,12 +17884,12 @@ 1 2 -328432 +329088 2 705 -5168 +5179 @@ -17785,12 +17905,12 @@ 1 2 -332394 +333058 2 439 -1207 +1209 @@ -17800,15 +17920,15 @@ property_location -534058 +535129 id -423224 +424069 loc -52856 +52962 @@ -17822,17 +17942,17 @@ 1 2 -337860 +338534 2 3 -64060 +64183 3 119 -21303 +21350 @@ -17848,12 +17968,12 @@ 1 2 -49376 +49475 2 7080 -3479 +3486 @@ -17863,11 +17983,11 @@ indexers -17030 +17064 id -17030 +17064 name @@ -17875,15 +17995,15 @@ declaring_type_id -13540 +13567 type_id -3966 +3974 unbound_id -4433 +4442 @@ -17897,7 +18017,7 @@ 1 2 -17030 +17064 @@ -17913,7 +18033,7 @@ 1 2 -17030 +17064 @@ -17929,7 +18049,7 @@ 1 2 -17030 +17064 @@ -17945,7 +18065,7 @@ 1 2 -17030 +17064 @@ -18080,17 +18200,17 @@ 1 2 -10498 +10519 2 3 -2745 +2750 3 7 -296 +297 @@ -18106,7 +18226,7 @@ 1 2 -13530 +13557 2 @@ -18127,12 +18247,12 @@ 1 2 -11038 +11060 2 3 -2501 +2506 @@ -18148,17 +18268,17 @@ 1 2 -10498 +10519 2 3 -2745 +2750 3 7 -296 +297 @@ -18174,27 +18294,27 @@ 1 2 -876 +877 2 3 -871 +872 3 4 -1625 +1628 4 6 -267 +268 6 18 -301 +302 18 @@ -18215,7 +18335,7 @@ 1 2 -3961 +3969 2 @@ -18236,17 +18356,17 @@ 1 2 -1031 +1033 2 3 -778 +780 3 4 -1659 +1662 4 @@ -18256,7 +18376,7 @@ 6 978 -257 +258 @@ -18272,27 +18392,27 @@ 1 2 -876 +877 2 3 -871 +872 3 4 -1649 +1653 4 6 -267 +268 6 198 -301 +302 @@ -18308,12 +18428,12 @@ 1 2 -4098 +4106 2 452 -335 +336 @@ -18329,7 +18449,7 @@ 1 2 -4433 +4442 @@ -18345,12 +18465,12 @@ 1 2 -4098 +4106 2 452 -335 +336 @@ -18366,12 +18486,12 @@ 1 2 -4244 +4252 2 452 -189 +190 @@ -18381,11 +18501,11 @@ indexer_location -23737 +23802 id -12580 +12621 loc @@ -18403,27 +18523,27 @@ 1 2 -4392 +4407 2 3 -6670 +6698 3 4 -289 +286 4 5 -1115 +1117 5 13 -114 +113 @@ -18444,12 +18564,12 @@ 2 3 -23 +22 3 4 -17 +18 4 @@ -18482,8 +18602,8 @@ 17 -3525 -5399 +3540 +5425 3 @@ -18494,11 +18614,11 @@ accessors -567456 +568589 id -567456 +568589 kind @@ -18506,15 +18626,15 @@ name -121157 +121398 declaring_member_id -440254 +441133 unbound_id -440103 +440982 @@ -18528,7 +18648,7 @@ 1 2 -567456 +568589 @@ -18544,7 +18664,7 @@ 1 2 -567456 +568589 @@ -18560,7 +18680,7 @@ 1 2 -567456 +568589 @@ -18576,7 +18696,7 @@ 1 2 -567456 +568589 @@ -18676,27 +18796,27 @@ 1 2 -75138 +75288 2 3 -19935 +19975 3 4 -7923 +7939 4 8 -10118 +10138 8 2558 -8040 +8056 @@ -18712,7 +18832,7 @@ 1 2 -121157 +121398 @@ -18728,27 +18848,27 @@ 1 2 -75148 +75298 2 3 -19925 +19965 3 4 -7923 +7939 4 8 -10118 +10138 8 2558 -8040 +8056 @@ -18764,27 +18884,27 @@ 1 2 -75785 +75937 2 3 -20602 +20643 3 4 -7758 +7773 4 8 -9646 +9665 8 1202 -7363 +7378 @@ -18800,12 +18920,12 @@ 1 2 -313062 +313687 2 3 -127187 +127441 4 @@ -18826,12 +18946,12 @@ 1 2 -313062 +313687 2 3 -127192 +127446 @@ -18847,12 +18967,12 @@ 1 2 -313062 +313687 2 3 -127192 +127446 @@ -18868,12 +18988,12 @@ 1 2 -313062 +313687 2 3 -127187 +127441 4 @@ -18894,12 +19014,12 @@ 1 2 -433445 +434310 2 705 -6658 +6671 @@ -18915,7 +19035,7 @@ 1 2 -440103 +440982 @@ -18931,7 +19051,7 @@ 1 2 -440103 +440982 @@ -18947,12 +19067,12 @@ 1 2 -433445 +434310 2 705 -6658 +6671 @@ -18973,15 +19093,15 @@ accessor_location -747223 +748724 id -567456 +568589 loc -93146 +93332 @@ -18995,17 +19115,17 @@ 1 2 -432394 +433257 2 3 -98335 +98521 3 119 -36727 +36810 @@ -19021,12 +19141,12 @@ 1 2 -89545 +89723 2 8294 -3601 +3608 @@ -19036,27 +19156,27 @@ events -15219 +15249 id -15219 +15249 name -12980 +13006 declaring_type_id -1226 +1228 type_id -6361 +6374 unbound_id -15209 +15240 @@ -19070,7 +19190,7 @@ 1 2 -15219 +15249 @@ -19086,7 +19206,7 @@ 1 2 -15219 +15249 @@ -19102,7 +19222,7 @@ 1 2 -15219 +15249 @@ -19118,7 +19238,7 @@ 1 2 -15219 +15249 @@ -19134,12 +19254,12 @@ 1 2 -11992 +12016 2 12 -978 +980 14 @@ -19160,12 +19280,12 @@ 1 2 -11992 +12016 2 10 -978 +980 14 @@ -19186,7 +19306,7 @@ 1 2 -12839 +12865 2 @@ -19207,12 +19327,12 @@ 1 2 -11992 +12016 2 12 -978 +980 14 @@ -19233,12 +19353,12 @@ 1 2 -618 +619 2 3 -228 +229 3 @@ -19274,7 +19394,7 @@ 1 2 -618 +619 2 @@ -19315,7 +19435,7 @@ 1 2 -769 +770 2 @@ -19335,7 +19455,7 @@ 12 181 -77 +78 @@ -19351,12 +19471,12 @@ 1 2 -618 +619 2 3 -228 +229 3 @@ -19392,22 +19512,22 @@ 1 2 -4409 +4418 2 3 -1163 +1165 3 6 -515 +516 6 318 -272 +273 @@ -19423,17 +19543,17 @@ 1 2 -4798 +4808 2 3 -915 +916 3 8 -501 +502 8 @@ -19454,12 +19574,12 @@ 1 2 -5748 +5759 2 4 -520 +521 4 @@ -19480,22 +19600,22 @@ 1 2 -4409 +4418 2 3 -1163 +1165 3 6 -515 +516 6 318 -272 +273 @@ -19511,7 +19631,7 @@ 1 2 -15199 +15230 2 @@ -19532,7 +19652,7 @@ 1 2 -15209 +15240 @@ -19548,7 +19668,7 @@ 1 2 -15199 +15230 2 @@ -19569,7 +19689,7 @@ 1 2 -15199 +15230 2 @@ -19584,11 +19704,11 @@ event_location -15857 +15888 id -15219 +15249 loc @@ -19606,12 +19726,12 @@ 1 2 -14581 +14610 2 3 -637 +638 @@ -19687,11 +19807,11 @@ event_accessors -30438 +30499 id -30438 +30499 kind @@ -19699,15 +19819,15 @@ name -26671 +26725 declaring_event_id -15219 +15249 unbound_id -30419 +30480 @@ -19721,7 +19841,7 @@ 1 2 -30438 +30499 @@ -19737,7 +19857,7 @@ 1 2 -30438 +30499 @@ -19753,7 +19873,7 @@ 1 2 -30438 +30499 @@ -19769,7 +19889,7 @@ 1 2 -30438 +30499 @@ -19849,12 +19969,12 @@ 1 2 -24686 +24735 2 16 -1985 +1989 @@ -19870,7 +19990,7 @@ 1 2 -26671 +26725 @@ -19886,12 +20006,12 @@ 1 2 -24686 +24735 2 16 -1985 +1989 @@ -19907,12 +20027,12 @@ 1 2 -24686 +24735 2 16 -1985 +1989 @@ -19928,7 +20048,7 @@ 2 3 -15219 +15249 @@ -19944,7 +20064,7 @@ 2 3 -15219 +15249 @@ -19960,7 +20080,7 @@ 2 3 -15219 +15249 @@ -19976,7 +20096,7 @@ 2 3 -15219 +15249 @@ -19992,7 +20112,7 @@ 1 2 -30399 +30460 2 @@ -20013,7 +20133,7 @@ 1 2 -30419 +30480 @@ -20029,7 +20149,7 @@ 1 2 -30419 +30480 @@ -20045,7 +20165,7 @@ 1 2 -30399 +30460 2 @@ -20060,11 +20180,11 @@ event_accessor_location -31714 +31777 id -30438 +30499 loc @@ -20082,12 +20202,12 @@ 1 2 -29163 +29221 2 3 -1275 +1277 @@ -20163,11 +20283,11 @@ operators -12401 +12426 id -12401 +12426 name @@ -20175,19 +20295,19 @@ symbol -116 +117 declaring_type_id -3022 +3028 type_id -1620 +1623 unbound_id -11647 +11670 @@ -20201,7 +20321,7 @@ 1 2 -12401 +12426 @@ -20217,7 +20337,7 @@ 1 2 -12401 +12426 @@ -20233,7 +20353,7 @@ 1 2 -12401 +12426 @@ -20249,7 +20369,7 @@ 1 2 -12401 +12426 @@ -20265,7 +20385,7 @@ 1 2 -12401 +12426 @@ -20459,7 +20579,7 @@ 2 3 -38 +39 3 @@ -20764,7 +20884,7 @@ 2 3 -38 +39 3 @@ -20886,12 +21006,12 @@ 1 2 -472 +473 2 3 -1567 +1570 3 @@ -20901,7 +21021,7 @@ 4 6 -267 +268 6 @@ -20911,12 +21031,12 @@ 7 16 -228 +229 16 73 -111 +112 @@ -20932,12 +21052,12 @@ 1 2 -627 +629 2 3 -1538 +1541 3 @@ -20947,7 +21067,7 @@ 4 5 -272 +273 5 @@ -20973,12 +21093,12 @@ 1 2 -627 +629 2 3 -1542 +1545 3 @@ -20988,17 +21108,17 @@ 4 5 -272 +273 5 9 -228 +229 9 22 -111 +112 @@ -21014,12 +21134,12 @@ 1 2 -2019 +2023 2 3 -418 +419 3 @@ -21050,12 +21170,12 @@ 1 2 -472 +473 2 3 -1567 +1570 3 @@ -21065,7 +21185,7 @@ 4 6 -267 +268 6 @@ -21075,12 +21195,12 @@ 7 16 -228 +229 16 73 -111 +112 @@ -21096,12 +21216,12 @@ 1 2 -793 +794 2 3 -369 +370 3 @@ -21137,17 +21257,17 @@ 1 2 -1207 +1209 2 3 -150 +151 3 5 -116 +117 5 @@ -21173,7 +21293,7 @@ 1 2 -1207 +1209 2 @@ -21209,7 +21329,7 @@ 1 2 -1265 +1267 2 @@ -21240,12 +21360,12 @@ 1 2 -793 +794 2 3 -369 +370 3 @@ -21281,7 +21401,7 @@ 1 2 -11500 +11523 2 @@ -21302,7 +21422,7 @@ 1 2 -11647 +11670 @@ -21318,7 +21438,7 @@ 1 2 -11647 +11670 @@ -21334,7 +21454,7 @@ 1 2 -11500 +11523 2 @@ -21355,7 +21475,7 @@ 1 2 -11588 +11611 2 @@ -21370,15 +21490,15 @@ operator_location -22240 +22284 id -5632 +5643 loc -3156 +3162 @@ -21392,12 +21512,12 @@ 1 2 -839 +840 2 3 -3147 +3153 3 @@ -21407,12 +21527,12 @@ 9 11 -449 +450 11 12 -581 +582 12 @@ -21433,12 +21553,12 @@ 1 2 -2766 +2771 2 9 -236 +237 9 @@ -21453,15 +21573,15 @@ constant_value -185218 +185587 id -185106 +185475 value -47819 +47914 @@ -21475,12 +21595,12 @@ 1 2 -184994 +185363 2 3 -111 +112 @@ -21496,27 +21616,27 @@ 1 2 -32867 +32933 2 3 -7213 +7227 3 4 -3883 +3891 4 61 -3587 +3594 61 2421 -267 +268 @@ -21526,27 +21646,27 @@ methods -1115829 +1118291 id -1115829 +1118291 name -133495 +133961 declaring_type_id -201887 +202505 type_id -112795 +113020 unbound_id -696055 +697679 @@ -21560,7 +21680,7 @@ 1 2 -1115829 +1118291 @@ -21576,7 +21696,7 @@ 1 2 -1115829 +1118291 @@ -21592,7 +21712,7 @@ 1 2 -1115829 +1118291 @@ -21608,7 +21728,7 @@ 1 2 -1115829 +1118291 @@ -21624,32 +21744,32 @@ 1 2 -69093 +69407 2 3 -23600 +23662 3 4 -10824 +10855 4 6 -10415 +10436 6 12 -10561 +10582 12 5621 -8999 +9017 @@ -21665,32 +21785,32 @@ 1 2 -79455 +79789 2 3 -19327 +19380 3 4 -11306 +11338 4 7 -11038 +11060 7 33 -10099 +10119 33 4959 -2268 +2272 @@ -21706,22 +21826,22 @@ 1 2 -112775 +113200 2 3 -10585 +10607 3 -174 -10016 +209 +10051 -177 +222 2703 -116 +102 @@ -21737,32 +21857,32 @@ 1 2 -70831 +71148 2 3 -24466 +24530 3 4 -10897 +10928 4 6 -10712 +10733 6 -12 -10021 +13 +10733 -12 +13 4958 -6565 +5886 @@ -21778,42 +21898,42 @@ 1 2 -59680 +59994 2 3 -42952 +43057 3 4 -31271 +31333 4 5 -14241 +14269 5 6 -14776 +14806 6 10 -16085 +16117 10 23 -15642 +15674 23 1309 -7237 +7251 @@ -21829,37 +21949,37 @@ 1 2 -64742 +65066 2 3 -44636 +44744 3 4 -34366 +34435 4 5 -18178 +18214 5 8 -18144 +18180 8 18 -15238 +15269 18 457 -6580 +6593 @@ -21875,32 +21995,32 @@ 1 2 -97726 +98136 2 3 -48870 +48968 3 4 -22928 +22974 4 5 -11612 +11636 5 10 -15195 +15225 10 738 -5553 +5564 @@ -21916,42 +22036,42 @@ 1 2 -59787 +60102 2 3 -43030 +43135 3 4 -31271 +31333 4 5 -14275 +14303 5 6 -14796 +14825 6 10 -16003 +16035 10 23 -16100 +16132 23 698 -6624 +6637 @@ -21967,27 +22087,27 @@ 1 2 -75381 +75532 2 3 -14469 +14498 3 4 -8303 +8319 4 10 -8819 +8836 10 -62149 -5821 +62181 +5832 @@ -22003,22 +22123,22 @@ 1 2 -91501 +91684 2 3 -9607 +9626 3 8 -8658 +8675 8 -7666 -3027 +7691 +3033 @@ -22034,22 +22154,22 @@ 1 2 -87330 +87504 2 3 -13968 +13996 3 8 -8794 +8812 8 -19632 -2701 +19662 +2706 @@ -22065,27 +22185,27 @@ 1 2 -75493 +75644 2 3 -14528 +14557 3 4 -8376 +8393 4 10 -8755 +8773 10 -44480 -5640 +44512 +5652 @@ -22101,12 +22221,12 @@ 1 2 -669242 +670812 2 1367 -26812 +26866 @@ -22122,7 +22242,7 @@ 1 2 -696055 +697679 @@ -22138,12 +22258,12 @@ 1 2 -671106 +672680 2 1367 -24948 +24998 @@ -22159,12 +22279,12 @@ 1 2 -685698 +687301 2 1367 -10357 +10377 @@ -22174,15 +22294,15 @@ method_location -1279418 +1282235 id -1115829 +1118291 loc -40801 +40882 @@ -22196,17 +22316,17 @@ 1 2 -985551 +987752 2 3 -98194 +98360 3 119 -32084 +32177 @@ -22222,17 +22342,17 @@ 1 2 -36191 +36264 2 51 -3076 +3082 51 27729 -1533 +1536 @@ -22242,23 +22362,23 @@ constructors -277440 +277993 id -277440 +277993 name -133368 +133634 declaring_type_id -211826 +212249 unbound_id -223089 +223534 @@ -22272,7 +22392,7 @@ 1 2 -277440 +277993 @@ -22288,7 +22408,7 @@ 1 2 -277440 +277993 @@ -22304,7 +22424,7 @@ 1 2 -277440 +277993 @@ -22320,22 +22440,22 @@ 1 2 -102112 +102315 2 3 -19156 +19195 3 8 -10240 +10260 8 2183 -1859 +1862 @@ -22351,17 +22471,17 @@ 1 2 -122393 +122637 2 11 -10074 +10095 11 2183 -900 +902 @@ -22377,22 +22497,22 @@ 1 2 -102992 +103198 2 3 -19312 +19351 3 10 -10079 +10099 10 2183 -983 +985 @@ -22408,17 +22528,17 @@ 1 2 -179182 +179540 2 3 -19736 +19775 3 20 -12907 +12933 @@ -22434,7 +22554,7 @@ 1 2 -211826 +212249 @@ -22450,17 +22570,17 @@ 1 2 -179182 +179540 2 3 -19736 +19775 3 20 -12907 +12933 @@ -22476,12 +22596,12 @@ 1 2 -220660 +221100 2 780 -2428 +2433 @@ -22497,7 +22617,7 @@ 1 2 -223089 +223534 @@ -22513,12 +22633,12 @@ 1 2 -220660 +221100 2 780 -2428 +2433 @@ -22528,15 +22648,15 @@ constructor_location -321205 +321846 id -277440 +277993 loc -24754 +24803 @@ -22550,17 +22670,17 @@ 1 2 -238147 +238623 2 3 -37544 +37619 3 87 -1747 +1750 @@ -22576,22 +22696,22 @@ 1 2 -18986 +19024 2 3 -3178 +3184 3 59 -1864 +1867 59 4796 -725 +726 @@ -22601,23 +22721,23 @@ destructors -442 +443 id -442 +443 name -413 +414 declaring_type_id -442 +443 unbound_id -428 +429 @@ -22631,7 +22751,7 @@ 1 2 -442 +443 @@ -22647,7 +22767,7 @@ 1 2 -442 +443 @@ -22663,7 +22783,7 @@ 1 2 -442 +443 @@ -22679,7 +22799,7 @@ 1 2 -394 +395 2 @@ -22700,7 +22820,7 @@ 1 2 -394 +395 2 @@ -22742,7 +22862,7 @@ 1 2 -442 +443 @@ -22758,7 +22878,7 @@ 1 2 -442 +443 @@ -22774,7 +22894,7 @@ 1 2 -442 +443 @@ -22790,7 +22910,7 @@ 1 2 -418 +419 2 @@ -22811,7 +22931,7 @@ 1 2 -428 +429 @@ -22827,7 +22947,7 @@ 1 2 -418 +419 2 @@ -22842,7 +22962,7 @@ destructor_location -644 +646 id @@ -22850,7 +22970,7 @@ loc -321 +322 @@ -22920,7 +23040,7 @@ 1 2 -253 +254 2 @@ -22945,15 +23065,15 @@ overrides -273731 +274277 id -273707 +274253 base_id -65355 +65486 @@ -22967,7 +23087,7 @@ 1 2 -273682 +274228 2 @@ -22988,27 +23108,27 @@ 1 2 -40221 +40302 2 3 -10464 +10485 3 4 -4283 +4291 4 7 -5334 +5345 7 184 -4906 +4915 215 @@ -23023,15 +23143,15 @@ explicitly_implements -155830 +156141 id -155830 +156141 interface_id -13272 +13299 @@ -23045,7 +23165,7 @@ 1 2 -155830 +156141 @@ -23061,32 +23181,32 @@ 1 2 -6765 +6778 2 3 -2487 +2492 3 4 -1182 +1185 4 5 -457 +458 5 7 -1207 +1209 7 58 -997 +999 58 @@ -23450,11 +23570,11 @@ fields -555284 +556392 id -555284 +556392 kind @@ -23462,19 +23582,19 @@ name -218061 +218496 declaring_type_id -103504 +103710 type_id -89447 +89626 unbound_id -547594 +548687 @@ -23488,7 +23608,7 @@ 1 2 -555284 +556392 @@ -23504,7 +23624,7 @@ 1 2 -555284 +556392 @@ -23520,7 +23640,7 @@ 1 2 -555284 +556392 @@ -23536,7 +23656,7 @@ 1 2 -555284 +556392 @@ -23552,7 +23672,7 @@ 1 2 -555284 +556392 @@ -23673,22 +23793,22 @@ 1 2 -176043 +176394 2 3 -22549 +22594 3 14 -16543 +16576 14 4800 -2925 +2930 @@ -23704,12 +23824,12 @@ 1 2 -208711 +209128 2 3 -9349 +9368 @@ -23725,22 +23845,22 @@ 1 2 -176067 +176419 2 3 -22534 +22579 3 14 -16533 +16566 14 4800 -2925 +2930 @@ -23756,17 +23876,17 @@ 1 2 -188542 +188918 2 3 -17643 +17678 3 2459 -11875 +11899 @@ -23782,22 +23902,22 @@ 1 2 -176432 +176785 2 3 -22554 +22599 3 15 -16460 +16493 15 4800 -2613 +2618 @@ -23813,42 +23933,42 @@ 1 2 -27299 +27354 2 3 -21133 +21175 3 4 -12562 +12587 4 5 -10094 +10114 5 6 -7928 +7944 6 8 -9266 +9285 8 12 -8142 +8158 12 4204 -7076 +7090 @@ -23864,12 +23984,12 @@ 1 2 -102413 +102618 2 3 -1090 +1092 @@ -23885,42 +24005,42 @@ 1 2 -27299 +27354 2 3 -21137 +21180 3 4 -12566 +12591 4 5 -10089 +10109 5 6 -7928 +7944 6 8 -9271 +9290 8 12 -8142 +8158 12 4204 -7067 +7081 @@ -23936,37 +24056,37 @@ 1 2 -44495 +44583 2 3 -21186 +21228 3 4 -9427 +9446 4 5 -7359 +7373 5 6 -6156 +6169 6 9 -9583 +9602 9 132 -5295 +5305 @@ -23982,42 +24102,42 @@ 1 2 -27299 +27354 2 3 -21133 +21175 3 4 -12562 +12587 4 5 -10094 +10114 5 6 -7928 +7944 6 8 -9266 +9285 8 12 -8142 +8158 12 4204 -7076 +7090 @@ -24033,32 +24153,32 @@ 1 2 -55757 +55868 2 3 -10873 +10894 3 4 -6205 +6217 4 7 -7962 +7978 7 27 -6784 +6798 27 9290 -1864 +1867 @@ -24074,12 +24194,12 @@ 1 2 -87252 +87426 2 3 -2195 +2199 @@ -24095,27 +24215,27 @@ 1 2 -63681 +63808 2 3 -9310 +9329 3 5 -7879 +7895 5 18 -6833 +6847 18 5213 -1742 +1745 @@ -24131,22 +24251,22 @@ 1 2 -68261 +68397 2 3 -10031 +10051 3 7 -7227 +7242 7 5746 -3927 +3935 @@ -24162,32 +24282,32 @@ 1 2 -55801 +55912 2 3 -11199 +11221 3 4 -5918 +5930 4 7 -7938 +7954 7 27 -6740 +6754 27 9185 -1849 +1853 @@ -24203,12 +24323,12 @@ 1 2 -546683 +547775 2 234 -910 +911 @@ -24224,7 +24344,7 @@ 1 2 -547594 +548687 @@ -24240,7 +24360,7 @@ 1 2 -547594 +548687 @@ -24256,12 +24376,12 @@ 1 2 -546683 +547775 2 234 -910 +911 @@ -24277,12 +24397,12 @@ 1 2 -547097 +548189 2 138 -496 +497 @@ -24292,15 +24412,15 @@ field_location -635980 +637250 id -547925 +549018 loc -52808 +52913 @@ -24314,17 +24434,17 @@ 1 2 -465880 +466810 2 3 -78039 +78195 3 57 -4005 +4013 @@ -24340,12 +24460,12 @@ 1 2 -49303 +49402 2 8882 -3504 +3511 @@ -24355,11 +24475,11 @@ localvars -163686 +163699 id -163686 +163699 kind @@ -24367,7 +24487,7 @@ name -22588 +22594 implicitly_typed @@ -24375,11 +24495,11 @@ type_id -7295 +7297 parent_id -163686 +163699 @@ -24393,7 +24513,7 @@ 1 2 -163686 +163699 @@ -24409,7 +24529,7 @@ 1 2 -163686 +163699 @@ -24425,7 +24545,7 @@ 1 2 -163686 +163699 @@ -24441,7 +24561,7 @@ 1 2 -163686 +163699 @@ -24457,7 +24577,7 @@ 1 2 -163686 +163699 @@ -24481,8 +24601,8 @@ 1 -162434 -162435 +162445 +162446 1 @@ -24507,8 +24627,8 @@ 1 -22375 -22376 +22381 +22382 1 @@ -24554,8 +24674,8 @@ 1 -7290 -7291 +7292 +7293 1 @@ -24580,8 +24700,8 @@ 1 -162867 -162868 +162880 +162881 1 @@ -24598,12 +24718,12 @@ 1 2 -14109 +14114 2 3 -3484 +3485 3 @@ -24634,7 +24754,7 @@ 1 2 -22496 +22502 2 @@ -24655,7 +24775,7 @@ 1 2 -19929 +19935 2 @@ -24676,7 +24796,7 @@ 1 2 -19219 +19225 2 @@ -24702,12 +24822,12 @@ 1 2 -14075 +14080 2 3 -3502 +3503 3 @@ -24736,13 +24856,13 @@ 12 -36616 -36617 +36617 +36618 1 -126635 -126636 +126645 +126646 1 @@ -24783,8 +24903,8 @@ 1 -16700 -16701 +16706 +16707 1 @@ -24804,8 +24924,8 @@ 1 -6177 -6178 +6179 +6180 1 @@ -24820,13 +24940,13 @@ 12 -36765 -36766 +36766 +36767 1 -126921 -126922 +126933 +126934 1 @@ -24843,7 +24963,7 @@ 1 2 -3307 +3309 2 @@ -24872,7 +24992,7 @@ 35 -37230 +37236 317 @@ -24889,7 +25009,7 @@ 1 2 -7266 +7268 2 @@ -24910,7 +25030,7 @@ 1 2 -4170 +4172 2 @@ -24934,7 +25054,7 @@ 49 -1937 +1942 84 @@ -24951,7 +25071,7 @@ 1 2 -5611 +5613 2 @@ -24972,12 +25092,12 @@ 1 2 -3241 +3243 2 3 -1169 +1168 3 @@ -24987,7 +25107,7 @@ 4 6 -648 +649 6 @@ -25001,7 +25121,7 @@ 35 -37235 +37241 319 @@ -25018,7 +25138,7 @@ 1 2 -163686 +163699 @@ -25034,7 +25154,7 @@ 1 2 -163686 +163699 @@ -25050,7 +25170,7 @@ 1 2 -163686 +163699 @@ -25066,7 +25186,7 @@ 1 2 -163686 +163699 @@ -25082,7 +25202,7 @@ 1 2 -163686 +163699 @@ -25092,15 +25212,15 @@ localvar_location -163251 +163262 id -163251 +163262 loc -163172 +163183 @@ -25114,7 +25234,7 @@ 1 2 -163251 +163262 @@ -25130,7 +25250,7 @@ 1 2 -163093 +163104 2 @@ -25145,19 +25265,19 @@ params -2415699 +2420755 id -2415699 +2420755 name -80750 +80911 type_id -330335 +330995 index @@ -25169,11 +25289,11 @@ parent_id -1368608 +1371574 unbound_id -1433914 +1437011 @@ -25187,7 +25307,7 @@ 1 2 -2415699 +2420755 @@ -25203,7 +25323,7 @@ 1 2 -2415699 +2420755 @@ -25219,7 +25339,7 @@ 1 2 -2415699 +2420755 @@ -25235,7 +25355,7 @@ 1 2 -2415699 +2420755 @@ -25251,7 +25371,7 @@ 1 2 -2415699 +2420755 @@ -25267,7 +25387,7 @@ 1 2 -2415699 +2420755 @@ -25283,42 +25403,42 @@ 1 2 -31091 +31153 2 3 -13842 +13869 3 4 -7052 +7066 4 5 -4833 +4842 5 7 -6643 +6656 7 13 -6891 +6900 13 41 -6074 +6091 41 46351 -4321 +4330 @@ -25334,22 +25454,22 @@ 1 2 -64163 +64291 2 3 -8152 +8168 3 12 -6166 +6178 12 6855 -2268 +2272 @@ -25365,22 +25485,22 @@ 1 2 -54964 +55074 2 3 -14552 +14581 3 4 -5509 +5520 4 33 -5723 +5735 @@ -25396,12 +25516,12 @@ 1 2 -75722 +75873 2 7 -5027 +5037 @@ -25417,42 +25537,42 @@ 1 2 -31091 +31153 2 3 -13842 +13869 3 4 -7052 +7066 4 5 -4833 +4842 5 7 -6643 +6656 7 13 -6891 +6900 13 41 -6074 +6091 41 46351 -4321 +4330 @@ -25468,42 +25588,42 @@ 1 2 -31480 +31543 2 3 -14070 +14098 3 4 -7067 +7081 4 5 -4949 +4959 5 7 -6473 +6486 7 13 -6906 +6915 13 43 -6147 +6164 43 36753 -3655 +3662 @@ -25519,27 +25639,27 @@ 1 2 -227396 +227850 2 3 -38912 +38990 3 6 -30059 +30119 6 24 -25041 +25091 24 -48952 -8926 +48953 +8944 @@ -25555,17 +25675,17 @@ 1 2 -288877 +289454 2 4 -30468 +30528 4 2470 -10989 +11011 @@ -25581,17 +25701,17 @@ 1 2 -291939 +292521 2 3 -25055 +25105 3 36 -13340 +13367 @@ -25607,12 +25727,12 @@ 1 2 -321633 +322275 2 5 -8702 +8719 @@ -25628,27 +25748,27 @@ 1 2 -229893 +230352 2 3 -36955 +37029 3 6 -30472 +30533 6 25 -25002 +25052 25 -40409 -8011 +40410 +8027 @@ -25664,27 +25784,27 @@ 1 2 -233081 +233546 2 3 -34877 +34947 3 5 -25722 +25774 5 16 -25289 +25335 16 -33990 -11364 +33991 +11392 @@ -25759,7 +25879,7 @@ 47756 -281002 +281050 14 @@ -26043,7 +26163,7 @@ 47756 -281002 +281050 14 @@ -26119,7 +26239,7 @@ 29619 -168422 +168470 14 @@ -26159,8 +26279,8 @@ 4 -473058 -473059 +473106 +473107 4 @@ -26323,8 +26443,8 @@ 4 -274200 -274201 +274248 +274249 4 @@ -26364,8 +26484,8 @@ 4 -275403 -275404 +275451 +275452 4 @@ -26382,27 +26502,27 @@ 1 2 -803925 +805764 2 3 -332394 +333058 3 4 -129095 +129353 4 17 -102681 +102886 17 42 -511 +512 @@ -26418,27 +26538,27 @@ 1 2 -803925 +805764 2 3 -332394 +333058 3 4 -129095 +129353 4 17 -102681 +102886 17 42 -511 +512 @@ -26454,22 +26574,22 @@ 1 2 -853438 +855376 2 3 -332691 +333355 3 4 -113194 +113420 4 23 -69283 +69421 @@ -26485,27 +26605,27 @@ 1 2 -803925 +805764 2 3 -332394 +333058 3 4 -129095 +129353 4 17 -102681 +102886 17 42 -511 +512 @@ -26521,12 +26641,12 @@ 1 2 -1300152 +1302981 2 4 -68455 +68592 @@ -26542,27 +26662,27 @@ 1 2 -803925 +805764 2 3 -332394 +333058 3 4 -129095 +129353 4 17 -102681 +102886 17 42 -511 +512 @@ -26578,12 +26698,12 @@ 1 2 -1383671 +1386667 2 11328 -50243 +50343 @@ -26599,7 +26719,7 @@ 1 2 -1433914 +1437011 @@ -26615,12 +26735,12 @@ 1 2 -1415823 +1418884 2 3718 -18091 +18127 @@ -26636,7 +26756,7 @@ 1 2 -1433914 +1437011 @@ -26652,7 +26772,7 @@ 1 2 -1433914 +1437011 @@ -26668,12 +26788,12 @@ 1 2 -1383671 +1386667 2 11328 -50243 +50343 @@ -26683,15 +26803,15 @@ param_location -2685128 +2690766 id -2412010 +2417058 loc -137437 +137711 @@ -26705,17 +26825,17 @@ 1 2 -2149078 +2153558 2 3 -256131 +256687 3 60 -6799 +6812 @@ -26731,12 +26851,12 @@ 1 2 -133120 +133386 2 99581 -4317 +4325 @@ -26746,11 +26866,11 @@ statements -989159 +991134 id -989159 +991134 kind @@ -26768,7 +26888,7 @@ 1 2 -989159 +991134 @@ -26869,19 +26989,19 @@ stmt_parent -817914 +819547 stmt -817914 +819547 index -438 +439 parent -433297 +434161 @@ -26895,7 +27015,7 @@ 1 2 -817914 +819547 @@ -26911,7 +27031,7 @@ 1 2 -817914 +819547 @@ -27069,22 +27189,22 @@ 1 2 -292820 +293405 2 3 -75154 +75304 3 5 -38028 +38104 5 361 -27293 +27347 @@ -27100,22 +27220,22 @@ 1 2 -292820 +293405 2 3 -75154 +75304 3 5 -38028 +38104 5 361 -27293 +27347 @@ -27125,11 +27245,11 @@ stmt_parent_top_level -171245 +171586 stmt -171245 +171586 index @@ -27137,7 +27257,7 @@ parent -122859 +123104 @@ -27151,7 +27271,7 @@ 1 2 -171245 +171586 @@ -27167,7 +27287,7 @@ 1 2 -171245 +171586 @@ -27215,17 +27335,17 @@ 1 2 -76942 +77095 2 3 -43552 +43639 3 5 -2364 +2369 @@ -27241,7 +27361,7 @@ 1 2 -122859 +123104 @@ -27251,15 +27371,15 @@ stmt_location -989159 +991134 id -989159 +991134 loc -957581 +959493 @@ -27273,7 +27393,7 @@ 1 2 -989159 +991134 @@ -27289,12 +27409,12 @@ 1 2 -926004 +927852 2 3 -31577 +31640 @@ -27304,11 +27424,11 @@ catch_type -3431 +3438 catch_id -3431 +3438 type_id @@ -27330,7 +27450,7 @@ 1 2 -3431 +3438 @@ -27346,7 +27466,7 @@ 1 2 -3431 +3438 @@ -27470,11 +27590,11 @@ expressions -4250796 +4259281 id -4250796 +4259281 kind @@ -27482,7 +27602,7 @@ type_id -22998 +23068 @@ -27496,7 +27616,7 @@ 1 2 -4250796 +4259281 @@ -27512,7 +27632,7 @@ 1 2 -4250796 +4259281 @@ -27532,7 +27652,7 @@ 20 -31 +34 8 @@ -27557,42 +27677,42 @@ 828 -1309 +1311 8 -1392 +1396 1961 8 2052 -3102 +3201 8 -3775 -7543 +3799 +7561 8 8310 -19440 +19450 8 -24209 -163739 +25080 +163752 8 -178499 -524128 +178985 +524164 8 -547916 -751647 +548159 +754676 2 @@ -27638,22 +27758,22 @@ 200 -373 +375 8 -375 -925 +377 +929 8 -1701 -4715 +1685 +4762 8 -6912 -7294 +6913 +7296 5 @@ -27670,62 +27790,62 @@ 1 2 -5201 +5218 2 3 -3078 +3055 3 4 -1231 +1182 4 5 -1641 +1653 5 6 -1082 +1125 6 8 -1747 +1763 8 12 -1849 +1863 12 -20 -1929 +19 +1735 -20 -37 -1758 +19 +34 +1761 -37 -88 -1730 +34 +76 +1744 -88 -11916 -1725 +76 +1037 +1731 -12983 -493376 -27 +1039 +493877 +238 @@ -27741,42 +27861,42 @@ 1 2 -8860 +8888 2 3 -4639 +4536 3 4 -2983 +3058 4 5 -1856 +1881 5 6 -1200 +1227 6 8 -1595 +1608 8 16 -1750 +1754 16 56 -115 +116 @@ -27786,19 +27906,19 @@ expr_parent -3929701 +3937545 expr -3929701 +3937545 index -79595 +79754 parent -2579685 +2584835 @@ -27812,7 +27932,7 @@ 1 2 -3929701 +3937545 @@ -27828,7 +27948,7 @@ 1 2 -3929701 +3937545 @@ -27844,22 +27964,22 @@ 1 2 -66009 +66140 2 6 -6180 +6192 6 13 -6024 +6036 13 1629890 -1381 +1384 @@ -27875,22 +27995,22 @@ 1 2 -66009 +66140 2 6 -6180 +6192 6 13 -6024 +6036 13 1629890 -1381 +1384 @@ -27906,17 +28026,17 @@ 1 2 -1619524 +1622757 2 3 -831170 +832829 3 65537 -128990 +129248 @@ -27932,17 +28052,17 @@ 1 2 -1619524 +1622757 2 3 -831170 +832829 3 65537 -128990 +129248 @@ -27952,11 +28072,11 @@ expr_parent_top_level -503434 +504439 expr -503434 +504439 index @@ -27964,7 +28084,7 @@ parent -435300 +436168 @@ -27978,7 +28098,7 @@ 1 2 -503434 +504439 @@ -27994,7 +28114,7 @@ 1 2 -503434 +504439 @@ -28122,17 +28242,17 @@ 1 2 -395316 +396105 2 4 -35622 +35693 4 9 -4360 +4369 @@ -28148,17 +28268,17 @@ 1 2 -395496 +396286 2 4 -35500 +35571 4 9 -4302 +4311 @@ -28168,33 +28288,44 @@ implicitly_typed_array_creation -10806 +10816 id -10806 +10816 explicitly_sized_array_creation -4346 +4354 id -4346 +4354 stackalloc_array_creation -824 +826 id -824 +826 + + + + + +implicitly_typed_object_creation +793 + + +id +793 @@ -28249,26 +28380,26 @@ expr_compiler_generated -1632449 +1635707 id -1632449 +1635707 expr_value -1397682 +1401388 id -1397682 +1401388 value -102750 +102872 @@ -28282,7 +28413,7 @@ 1 2 -1397682 +1401388 @@ -28298,27 +28429,27 @@ 1 2 -72202 +72261 2 3 -14937 +14971 3 6 -7870 +7888 6 -2345 -7707 +2259 +7716 -2360 -270158 -34 +2294 +272151 +36 @@ -28328,15 +28459,15 @@ expr_call -678122 +679353 caller_id -678122 +679353 target_id -53454 +53850 @@ -28350,7 +28481,7 @@ 1 2 -678122 +679353 @@ -28366,32 +28497,32 @@ 1 2 -28109 +28347 2 3 -10354 +10445 3 4 -4304 +4324 4 7 -4778 +4791 7 24 -4058 +4087 24 43831 -1851 +1856 @@ -28401,15 +28532,15 @@ expr_access -1385513 +1388279 accesser_id -1385513 +1388279 target_id -330512 +331172 @@ -28423,7 +28554,7 @@ 1 2 -1385513 +1388279 @@ -28439,37 +28570,37 @@ 1 2 -104418 +104627 2 3 -70538 +70679 3 4 -51446 +51548 4 5 -33333 +33400 5 6 -18802 +18839 6 9 -26970 +27024 9 185 -24791 +24841 185 @@ -28484,15 +28615,15 @@ expr_location -4250796 +4259281 id -4250796 +4259281 loc -2999969 +3003669 @@ -28506,7 +28637,7 @@ 1 2 -4250796 +4259281 @@ -28522,17 +28653,17 @@ 1 2 -2745988 +2748967 2 3 -248601 +249211 3 -542623 -5380 +542816 +5491 @@ -28542,15 +28673,15 @@ dynamic_member_name -13618 +13645 id -13618 +13645 name -1406 +1409 @@ -28564,7 +28695,7 @@ 1 2 -13618 +13645 @@ -28580,7 +28711,7 @@ 1 2 -408 +409 2 @@ -28595,12 +28726,12 @@ 4 5 -111 +112 5 7 -116 +117 7 @@ -28630,22 +28761,22 @@ conditional_access -3071 +3077 id -3071 +3077 expr_argument -873940 +875553 id -873940 +875553 mode @@ -28663,7 +28794,7 @@ 1 2 -873940 +875553 @@ -28682,8 +28813,8 @@ 1 -4305 -4306 +4306 +4307 1 @@ -28692,8 +28823,8 @@ 1 -863692 -863693 +865304 +865305 1 @@ -28704,15 +28835,15 @@ expr_argument_name -60611 +60861 id -60611 +60861 name -2708 +2738 @@ -28726,7 +28857,7 @@ 1 2 -60611 +60861 @@ -28742,32 +28873,32 @@ 1 2 -873 +894 2 3 -488 +487 3 4 -270 +275 4 5 -198 +195 5 7 -194 +197 7 12 -246 +247 12 @@ -28776,13 +28907,13 @@ 22 -235 -204 +198 +206 -236 +213 11230 -28 +30 @@ -33251,11 +33382,11 @@ commentline -409574 +410391 id -409574 +410391 kind @@ -33263,11 +33394,11 @@ text -196477 +196869 rawtext -199082 +199479 @@ -33281,7 +33412,7 @@ 1 2 -409574 +410391 @@ -33297,7 +33428,7 @@ 1 2 -409574 +410391 @@ -33313,7 +33444,7 @@ 1 2 -409574 +410391 @@ -33407,17 +33538,17 @@ 1 2 -160989 +161311 2 3 -23418 +23464 3 24462 -12069 +12093 @@ -33433,12 +33564,12 @@ 1 2 -195390 +195780 2 4 -1086 +1089 @@ -33454,12 +33585,12 @@ 1 2 -194407 +194795 2 51 -2070 +2074 @@ -33475,17 +33606,17 @@ 1 2 -164303 +164631 2 3 -22953 +22998 3 24457 -11825 +11849 @@ -33501,7 +33632,7 @@ 1 2 -199082 +199479 @@ -33517,7 +33648,7 @@ 1 2 -199082 +199479 @@ -33527,15 +33658,15 @@ commentline_location -409574 +410391 id -409574 +410391 loc -409574 +410391 @@ -33549,7 +33680,7 @@ 1 2 -409574 +410391 @@ -33565,7 +33696,7 @@ 1 2 -409574 +410391 @@ -33575,26 +33706,26 @@ commentblock -143959 +144246 id -143959 +144246 commentblock_location -143959 +144246 id -143959 +144246 loc -143959 +144246 @@ -33608,7 +33739,7 @@ 1 2 -143959 +144246 @@ -33624,7 +33755,7 @@ 1 2 -143959 +144246 @@ -33634,15 +33765,15 @@ commentblock_binding -498607 +499603 id -143900 +144188 entity -215498 +215928 bindtype @@ -33660,17 +33791,17 @@ 1 2 -18011 +18047 2 3 -28981 +29039 3 4 -96617 +96810 4 @@ -33691,22 +33822,22 @@ 1 2 -12923 +12949 2 3 -5208 +5218 3 4 -28935 +28992 4 5 -96833 +97027 @@ -33722,17 +33853,17 @@ 1 2 -157928 +158243 2 3 -41958 +42041 3 9895 -15612 +15643 @@ -33748,22 +33879,22 @@ 1 2 -94085 +94273 2 3 -92537 +92721 3 4 -28007 +28063 4 5 -868 +870 @@ -33835,19 +33966,19 @@ commentblock_child -542489 +543572 id -143959 +144246 commentline -409487 +410305 index -4976 +4986 @@ -33861,32 +33992,32 @@ 1 2 -76707 +76860 2 3 -19868 +19908 3 4 -18931 +18968 4 5 -8942 +8960 5 8 -11446 +11469 8 4098 -8062 +8078 @@ -33902,37 +34033,37 @@ 1 2 -4195 +4204 2 3 -73411 +73558 3 4 -21613 +21656 4 5 -17182 +17216 5 6 -8601 +8618 6 9 -11167 +11189 9 4099 -7786 +7802 @@ -33948,7 +34079,7 @@ 1 2 -409479 +410296 2 @@ -33969,12 +34100,12 @@ 1 2 -276494 +277046 2 3 -132993 +133258 @@ -33990,12 +34121,12 @@ 1 2 -2221 +2225 2 3 -1375 +1378 3 @@ -34005,12 +34136,12 @@ 7 10 -438 +439 11 28 -378 +379 28 @@ -34031,12 +34162,12 @@ 1 2 -2221 +2225 2 3 -1375 +1378 3 @@ -34046,12 +34177,12 @@ 7 10 -438 +439 11 28 -378 +379 28 @@ -34921,23 +35052,23 @@ cil_instruction -32137410 +32201560 id -32137410 +32201560 opcode -963 +965 index -332083 +332746 impl -1724452 +1727894 @@ -34951,7 +35082,7 @@ 1 2 -32137410 +32201560 @@ -34967,7 +35098,7 @@ 1 2 -32137410 +32201560 @@ -34983,7 +35114,7 @@ 1 2 -32137410 +32201560 @@ -34999,7 +35130,7 @@ 1 7 -77 +78 7 @@ -35105,7 +35236,7 @@ 214 313 -77 +78 323 @@ -35156,7 +35287,7 @@ 1 6 -77 +78 7 @@ -35237,22 +35368,22 @@ 1 2 -260118 +260637 2 11 -30565 +30626 11 25 -25464 +25515 25 354308 -15934 +15966 @@ -35268,22 +35399,22 @@ 1 2 -260711 +261232 2 3 -17662 +17698 3 5 -28701 +28758 5 160 -24909 +24959 160 @@ -35304,22 +35435,22 @@ 1 2 -260118 +260637 2 11 -30565 +30626 11 25 -25464 +25515 25 354308 -15934 +15966 @@ -35335,57 +35466,57 @@ 1 2 -83918 +84086 2 3 -251561 +252063 3 4 -331971 +332633 4 5 -195653 +196043 5 6 -106945 +107158 6 9 -157811 +158126 9 14 -150826 +151128 14 21 -133689 +133956 21 35 -131343 +131606 35 106 -129372 +129630 106 68231 -51357 +51460 @@ -35401,57 +35532,57 @@ 1 2 -83918 +84086 2 3 -251848 +252351 3 4 -337933 +338607 4 5 -239189 +239666 5 6 -132283 +132547 6 7 -96217 +96410 7 9 -147614 +147909 9 12 -128710 +128967 12 17 -135651 +135922 17 33 -131937 +132201 33 74 -39146 +39224 @@ -35467,57 +35598,57 @@ 1 2 -83918 +84086 2 3 -251561 +252063 3 4 -331971 +332633 4 5 -195653 +196043 5 6 -106945 +107158 6 9 -157811 +158126 9 14 -150826 +151128 14 21 -133689 +133956 21 35 -131343 +131606 35 106 -129372 +129630 106 68231 -51357 +51460 @@ -35527,15 +35658,15 @@ cil_jump -2001912 +2005908 instruction -2001912 +2005908 target -1603324 +1606525 @@ -35549,7 +35680,7 @@ 1 2 -2001912 +2005908 @@ -35565,17 +35696,17 @@ 1 2 -1389882 +1392656 2 3 -143579 +143866 3 360 -69862 +70002 @@ -35585,15 +35716,15 @@ cil_access -11916397 +11940184 instruction -11916397 +11940184 target -2662632 +2667947 @@ -35607,7 +35738,7 @@ 1 2 -11916397 +11940184 @@ -35623,37 +35754,37 @@ 1 2 -944244 +946129 2 3 -739397 +740873 3 4 -268830 +269366 4 5 -186979 +187353 5 7 -226525 +226977 7 14 -203411 +203817 14 25741 -93244 +93430 @@ -35663,15 +35794,15 @@ cil_value -1882648 +1886406 instruction -1882648 +1886406 value -494493 +495480 @@ -35685,7 +35816,7 @@ 1 2 -1882648 +1886406 @@ -35701,27 +35832,27 @@ 1 2 -334127 +334794 2 3 -78949 +79107 3 6 -40679 +40760 6 33 -37223 +37297 33 86799 -3514 +3521 @@ -35731,19 +35862,19 @@ cil_switch -194261 +194648 instruction -23834 +23881 index -2516 +2521 target -130511 +130772 @@ -35757,42 +35888,42 @@ 3 4 -7013 +7027 4 5 -4589 +4598 5 6 -3226 +3233 6 7 -1684 +1687 7 8 -1440 +1443 8 11 -2156 +2160 11 17 -1844 +1848 17 128 -1791 +1794 141 @@ -35813,42 +35944,42 @@ 1 3 -1056 +1058 3 4 -8240 +8256 4 5 -5485 +5496 5 6 -2569 +2574 6 7 -1839 +1843 7 9 -1698 +1702 9 14 -1795 +1799 14 204 -1148 +1150 @@ -35869,7 +36000,7 @@ 2 3 -988 +989 3 @@ -35894,7 +36025,7 @@ 18 24 -189 +190 25 @@ -35904,7 +36035,7 @@ 47 225 -189 +190 238 @@ -35925,12 +36056,12 @@ 1 2 -38 +39 2 3 -973 +975 3 @@ -35940,7 +36071,7 @@ 4 5 -311 +312 5 @@ -35960,12 +36091,12 @@ 24 47 -194 +195 47 271 -189 +190 289 @@ -35986,12 +36117,12 @@ 1 2 -128881 +129138 2 12 -1630 +1633 @@ -36007,17 +36138,17 @@ 1 2 -118129 +118365 2 7 -9992 +10012 7 253 -2389 +2394 @@ -36095,15 +36226,15 @@ cil_type_location -277143 +277696 id -254788 +255297 loc -3411 +3418 @@ -36117,12 +36248,12 @@ 1 2 -232433 +232897 2 3 -22354 +22399 @@ -36148,22 +36279,22 @@ 4 6 -233 +234 6 9 -296 +297 9 13 -272 +273 13 17 -267 +268 17 @@ -36173,27 +36304,27 @@ 23 32 -262 +263 32 43 -267 +268 43 66 -257 +258 66 110 -262 +263 112 238 -257 +258 239 @@ -36208,15 +36339,15 @@ cil_method_location -1882604 +1886362 id -1795210 +1798793 loc -3124 +3130 @@ -36230,12 +36361,12 @@ 1 2 -1707816 +1711225 2 3 -87393 +87568 @@ -36251,7 +36382,7 @@ 1 11 -257 +258 11 @@ -36321,15 +36452,15 @@ cil_type -794186 +795771 id -794186 +795771 name -178939 +179296 kind @@ -36337,11 +36468,11 @@ parent -155314 +155624 sourceDecl -464269 +465195 @@ -36355,7 +36486,7 @@ 1 2 -794186 +795771 @@ -36371,7 +36502,7 @@ 1 2 -794186 +795771 @@ -36387,7 +36518,7 @@ 1 2 -794186 +795771 @@ -36403,7 +36534,7 @@ 1 2 -794186 +795771 @@ -36419,22 +36550,22 @@ 1 2 -137559 +137833 2 3 -22476 +22521 3 7 -14138 +14167 7 21324 -4764 +4774 @@ -36450,7 +36581,7 @@ 1 2 -178939 +179296 @@ -36466,17 +36597,17 @@ 1 2 -162303 +162627 2 4 -13632 +13659 4 21324 -3003 +3009 @@ -36492,17 +36623,17 @@ 1 2 -146013 +146304 2 3 -22500 +22545 3 21324 -10425 +10446 @@ -36642,27 +36773,27 @@ 1 2 -101703 +101906 2 3 -26773 +26827 3 6 -13331 +13357 6 33 -11690 +11714 33 26080 -1815 +1819 @@ -36678,27 +36809,27 @@ 1 2 -102277 +102481 2 3 -27192 +27246 3 6 -13228 +13255 6 38 -11676 +11699 38 1430 -939 +941 @@ -36714,12 +36845,12 @@ 1 2 -152111 +152415 2 4 -3202 +3208 @@ -36735,27 +36866,27 @@ 1 2 -102175 +102379 2 3 -27212 +27266 3 6 -13136 +13162 6 38 -11656 +11680 38 3477 -1134 +1136 @@ -36771,12 +36902,12 @@ 1 2 -437504 +438378 2 3705 -26764 +26817 @@ -36792,7 +36923,7 @@ 1 2 -464269 +465195 @@ -36808,7 +36939,7 @@ 1 2 -464269 +465195 @@ -36824,12 +36955,12 @@ 1 2 -455951 +456861 2 225 -8317 +8334 @@ -36839,15 +36970,15 @@ cil_pointer_type -622 +624 id -622 +624 pointee -622 +624 @@ -36861,7 +36992,7 @@ 1 2 -622 +624 @@ -36877,7 +37008,7 @@ 1 2 -622 +624 @@ -36887,15 +37018,15 @@ cil_array_type -14158 +14186 id -14158 +14186 element_type -14080 +14108 rank @@ -36913,7 +37044,7 @@ 1 2 -14158 +14186 @@ -36929,7 +37060,7 @@ 1 2 -14158 +14186 @@ -36945,7 +37076,7 @@ 1 2 -14007 +14035 2 @@ -36966,7 +37097,7 @@ 1 2 -14007 +14035 2 @@ -37033,23 +37164,23 @@ cil_method -2309946 +2314557 id -2309946 +2314557 name -439305 +440182 parent -379625 +380382 return_type -213695 +214122 @@ -37063,7 +37194,7 @@ 1 2 -2309946 +2314557 @@ -37079,7 +37210,7 @@ 1 2 -2309946 +2314557 @@ -37095,7 +37226,7 @@ 1 2 -2309946 +2314557 @@ -37111,27 +37242,27 @@ 1 2 -270674 +271215 2 3 -79494 +79653 3 4 -25007 +25057 4 7 -33446 +33513 7 64064 -30682 +30743 @@ -37147,27 +37278,27 @@ 1 2 -284658 +285226 2 3 -76467 +76619 3 5 -39817 +39897 5 25 -33115 +33181 25 52725 -5246 +5257 @@ -37183,17 +37314,17 @@ 1 2 -383606 +384372 2 4 -40178 +40258 4 2803 -15521 +15552 @@ -37209,42 +37340,42 @@ 1 2 -107830 +108046 2 3 -84395 +84564 3 4 -49936 +50036 4 5 -28487 +28544 5 7 -30818 +30880 7 11 -32872 +32938 11 21 -28925 +28982 21 3536 -16358 +16391 @@ -37260,42 +37391,42 @@ 1 2 -114211 +114439 2 3 -86547 +86719 3 4 -50437 +50538 4 5 -28876 +28934 5 7 -32828 +32894 7 11 -29971 +30031 11 26 -28652 +28709 26 1885 -8098 +8115 @@ -37311,32 +37442,32 @@ 1 2 -161943 +162266 2 3 -93565 +93752 3 4 -46330 +46422 4 5 -23264 +23311 5 7 -28355 +28412 7 1924 -26165 +26217 @@ -37352,27 +37483,27 @@ 1 2 -131786 +132049 2 3 -38197 +38273 3 5 -18811 +18848 5 13 -16538 +16571 13 190707 -8361 +8378 @@ -37388,22 +37519,22 @@ 1 2 -153328 +153634 2 3 -30302 +30363 3 6 -19118 +19156 6 28461 -10946 +10967 @@ -37419,22 +37550,22 @@ 1 2 -145190 +145480 2 3 -35340 +35410 3 5 -17526 +17561 5 62018 -15638 +15669 @@ -37444,15 +37575,15 @@ cil_method_source_declaration -2103985 +2108184 method -2103985 +2108184 source -1861709 +1865426 @@ -37466,7 +37597,7 @@ 1 2 -2103985 +2108184 @@ -37482,12 +37613,12 @@ 1 2 -1756916 +1760423 2 1021 -104793 +105003 @@ -37497,19 +37628,19 @@ cil_method_implementation -1724452 +1727894 id -1724452 +1727894 method -1637701 +1640970 location -3090 +3096 @@ -37523,7 +37654,7 @@ 1 2 -1724452 +1727894 @@ -37539,7 +37670,7 @@ 1 2 -1724452 +1727894 @@ -37555,12 +37686,12 @@ 1 2 -1550949 +1554045 2 3 -86751 +86924 @@ -37576,12 +37707,12 @@ 1 2 -1550949 +1554045 2 3 -86751 +86924 @@ -37597,7 +37728,7 @@ 1 11 -272 +273 11 @@ -37612,7 +37743,7 @@ 36 50 -233 +234 50 @@ -37632,12 +37763,12 @@ 133 192 -233 +234 192 271 -233 +234 271 @@ -37647,7 +37778,7 @@ 372 654 -233 +234 682 @@ -37657,7 +37788,7 @@ 1599 33053 -189 +190 @@ -37673,7 +37804,7 @@ 1 11 -272 +273 11 @@ -37688,7 +37819,7 @@ 36 50 -233 +234 50 @@ -37708,12 +37839,12 @@ 133 192 -233 +234 192 271 -233 +234 271 @@ -37723,7 +37854,7 @@ 372 654 -233 +234 682 @@ -37733,7 +37864,7 @@ 1599 33053 -189 +190 @@ -37743,15 +37874,15 @@ cil_implements -106974 +107187 id -106215 +106427 decl -17706 +17741 @@ -37765,12 +37896,12 @@ 1 2 -105455 +105666 2 3 -759 +760 @@ -37786,27 +37917,27 @@ 1 2 -11525 +11548 2 3 -2701 +2706 3 5 -1576 +1580 5 18 -1328 +1331 18 2180 -574 +575 @@ -37816,23 +37947,23 @@ cil_field -1007580 +1009591 id -1007580 +1009591 parent -200967 +201369 name -360546 +361265 field_type -165715 +166046 @@ -37846,7 +37977,7 @@ 1 2 -1007580 +1009591 @@ -37862,7 +37993,7 @@ 1 2 -1007580 +1009591 @@ -37878,7 +38009,7 @@ 1 2 -1007580 +1009591 @@ -37894,47 +38025,47 @@ 1 2 -60566 +60687 2 3 -40995 +41077 3 4 -22271 +22316 4 5 -15467 +15498 5 6 -11700 +11723 6 8 -16932 +16966 8 12 -17837 +17873 12 227 -15078 +15108 237 4205 -116 +117 @@ -37950,47 +38081,47 @@ 1 2 -60566 +60687 2 3 -40995 +41077 3 4 -22271 +22316 4 5 -15467 +15498 5 6 -11700 +11723 6 8 -16932 +16966 8 12 -17837 +17873 12 227 -15078 +15108 237 4205 -116 +117 @@ -38006,37 +38137,37 @@ 1 2 -70344 +70484 2 3 -59704 +59824 3 4 -20402 +20443 4 5 -11452 +11475 5 7 -15672 +15703 7 11 -16042 +16074 11 132 -7349 +7364 @@ -38052,22 +38183,22 @@ 1 2 -261621 +262144 2 3 -55305 +55415 3 7 -30044 +30104 7 5664 -13574 +13601 @@ -38083,22 +38214,22 @@ 1 2 -261621 +262144 2 3 -55305 +55415 3 7 -30044 +30104 7 5664 -13574 +13601 @@ -38114,17 +38245,17 @@ 1 2 -305133 +305743 2 3 -34025 +34093 3 2790 -21386 +21428 @@ -38140,32 +38271,32 @@ 1 2 -82546 +82711 2 3 -43726 +43813 3 4 -8950 +8968 4 7 -15243 +15274 7 31 -12527 +12552 31 21103 -2720 +2726 @@ -38181,22 +38312,22 @@ 1 2 -96612 +96805 2 3 -44451 +44540 3 6 -14216 +14245 6 12257 -10435 +10455 @@ -38212,27 +38343,27 @@ 1 2 -119706 +119945 2 3 -17945 +17980 3 5 -13228 +13255 5 20 -12454 +12479 20 8901 -2380 +2384 @@ -38242,15 +38373,15 @@ cil_parameter -4542993 +4552061 id -4542993 +4552061 method -2218513 +2222941 index @@ -38258,7 +38389,7 @@ param_type -552091 +553193 @@ -38272,7 +38403,7 @@ 1 2 -4542993 +4552061 @@ -38288,7 +38419,7 @@ 1 2 -4542993 +4552061 @@ -38304,7 +38435,7 @@ 1 2 -4542993 +4552061 @@ -38320,27 +38451,27 @@ 1 2 -899793 +901589 2 3 -786773 +788344 3 4 -324378 +325026 4 7 -174792 +175141 7 42 -32775 +32840 @@ -38356,27 +38487,27 @@ 1 2 -899793 +901589 2 3 -786773 +788344 3 4 -324378 +325026 4 7 -174792 +175141 7 42 -32775 +32840 @@ -38392,22 +38523,22 @@ 1 2 -947787 +949679 2 3 -797272 +798863 3 4 -312750 +313375 4 23 -160702 +161023 @@ -38656,42 +38787,42 @@ 1 2 -185256 +185626 2 3 -136955 +137229 3 4 -44981 +45071 4 5 -38420 +38497 5 7 -43818 +43906 7 11 -42747 +42833 11 27 -41827 +41911 27 58009 -18081 +18117 @@ -38707,42 +38838,42 @@ 1 2 -188459 +188835 2 3 -135656 +135926 3 4 -45395 +45486 4 5 -37204 +37278 5 7 -44266 +44354 7 11 -42806 +42891 11 28 -41667 +41750 28 46067 -16635 +16669 @@ -38758,22 +38889,22 @@ 1 2 -385280 +386049 2 3 -109743 +109962 3 4 -44431 +44520 4 36 -12635 +12660 @@ -38783,37 +38914,37 @@ cil_parameter_in -32327 +32391 id -32327 +32391 cil_parameter_out -45989 +46081 id -45989 +46081 cil_setter -106677 +106890 prop -106677 +106890 method -106677 +106890 @@ -38827,7 +38958,7 @@ 1 2 -106677 +106890 @@ -38843,7 +38974,7 @@ 1 2 -106677 +106890 @@ -38853,15 +38984,15 @@ cil_getter -379075 +379831 prop -379075 +379831 method -379075 +379831 @@ -38875,7 +39006,7 @@ 1 2 -379075 +379831 @@ -38891,7 +39022,7 @@ 1 2 -379075 +379831 @@ -38901,15 +39032,15 @@ cil_adder -20855 +20897 event -20855 +20897 method -20855 +20897 @@ -38923,7 +39054,7 @@ 1 2 -20855 +20897 @@ -38939,7 +39070,7 @@ 1 2 -20855 +20897 @@ -38949,15 +39080,15 @@ cil_remover -20855 +20897 event -20855 +20897 method -20855 +20897 @@ -38971,7 +39102,7 @@ 1 2 -20855 +20897 @@ -38987,7 +39118,7 @@ 1 2 -20855 +20897 @@ -39045,23 +39176,23 @@ cil_property -379620 +380378 id -379620 +380378 parent -93579 +93766 name -106151 +106363 property_type -49785 +49885 @@ -39075,7 +39206,7 @@ 1 2 -379620 +380378 @@ -39091,7 +39222,7 @@ 1 2 -379620 +380378 @@ -39107,7 +39238,7 @@ 1 2 -379620 +380378 @@ -39123,42 +39254,42 @@ 1 2 -28842 +28900 2 3 -22257 +22301 3 4 -11403 +11426 4 5 -8444 +8461 5 6 -5733 +5744 6 9 -8653 +8671 9 25 -7091 +7105 25 1883 -1153 +1155 @@ -39174,42 +39305,42 @@ 1 2 -33583 +33650 2 3 -17774 +17810 3 4 -11301 +11323 4 5 -8454 +8471 5 6 -5713 +5725 6 8 -6619 +6632 8 15 -7208 +7222 15 1883 -2925 +2930 @@ -39225,32 +39356,32 @@ 1 2 -35028 +35098 2 3 -25737 +25788 3 4 -13462 +13489 4 5 -8094 +8110 5 8 -7748 +7763 8 50 -3509 +3516 @@ -39266,27 +39397,27 @@ 1 2 -62581 +62706 2 3 -21415 +21458 3 4 -6473 +6486 4 8 -8751 +8768 8 2134 -6930 +6944 @@ -39302,27 +39433,27 @@ 1 2 -62581 +62706 2 3 -21488 +21531 3 4 -6448 +6461 4 8 -8765 +8783 8 1400 -6867 +6881 @@ -39338,17 +39469,17 @@ 1 2 -89335 +89514 2 3 -10960 +10982 3 568 -5855 +5866 @@ -39364,27 +39495,27 @@ 1 2 -31392 +31455 2 3 -7509 +7524 3 4 -3178 +3184 4 8 -4360 +4369 8 15452 -3343 +3350 @@ -39400,27 +39531,27 @@ 1 2 -33179 +33245 2 3 -7023 +7037 3 4 -3041 +3048 4 8 -3859 +3867 8 5858 -2681 +2687 @@ -39436,22 +39567,22 @@ 1 2 -39895 +39975 2 3 -5305 +5315 3 12 -3796 +3803 12 6253 -788 +790 @@ -39461,23 +39592,23 @@ cil_event -20826 +20867 id -20826 +20867 parent -6453 +6466 name -13053 +13079 event_type -6789 +6803 @@ -39491,7 +39622,7 @@ 1 2 -20826 +20867 @@ -39507,7 +39638,7 @@ 1 2 -20826 +20867 @@ -39523,7 +39654,7 @@ 1 2 -20826 +20867 @@ -39539,17 +39670,17 @@ 1 2 -5738 +5749 2 7 -491 +492 7 465 -223 +224 @@ -39565,17 +39696,17 @@ 1 2 -5738 +5749 2 7 -491 +492 7 465 -223 +224 @@ -39591,12 +39722,12 @@ 1 2 -5913 +5925 2 20 -486 +487 30 @@ -39617,17 +39748,17 @@ 1 2 -11647 +11670 2 4 -963 +965 4 566 -442 +443 @@ -39643,17 +39774,17 @@ 1 2 -11647 +11670 2 4 -963 +965 4 566 -442 +443 @@ -39669,12 +39800,12 @@ 1 2 -12459 +12484 2 566 -593 +594 @@ -39690,22 +39821,22 @@ 1 2 -944 +946 2 3 -4511 +4520 3 4 -584 +585 4 8 -574 +575 8 @@ -39726,12 +39857,12 @@ 1 2 -1421 +1424 2 3 -5081 +5091 3 @@ -39752,27 +39883,27 @@ 1 2 -1309 +1311 2 3 -4341 +4350 3 4 -496 +497 4 10 -530 +531 10 243 -111 +112 @@ -39782,23 +39913,23 @@ cil_local_variable -1149772 +1152067 id -1149772 +1152067 impl -348358 +349054 index -691 +692 var_type -154122 +154429 @@ -39812,7 +39943,7 @@ 1 2 -1149772 +1152067 @@ -39828,7 +39959,7 @@ 1 2 -1149772 +1152067 @@ -39844,7 +39975,7 @@ 1 2 -1149772 +1152067 @@ -39860,37 +39991,37 @@ 1 2 -139788 +140067 2 3 -61982 +62106 3 4 -49279 +49377 4 5 -23454 +23501 5 7 -31850 +31913 7 12 -28832 +28890 12 143 -13170 +13196 @@ -39906,37 +40037,37 @@ 1 2 -139788 +140067 2 3 -61982 +62106 3 4 -49279 +49377 4 5 -23454 +23501 5 7 -31850 +31913 7 12 -28832 +28890 12 143 -13170 +13196 @@ -39952,32 +40083,32 @@ 1 2 -168421 +168757 2 3 -69959 +70099 3 4 -37802 +37878 4 5 -20587 +20628 5 7 -27669 +27724 7 47 -23916 +23964 @@ -40211,37 +40342,37 @@ 1 2 -81217 +81379 2 3 -27236 +27290 3 4 -8361 +8378 4 5 -11817 +11840 5 8 -12776 +12801 8 76 -11569 +11592 76 35710 -1143 +1146 @@ -40257,32 +40388,32 @@ 1 2 -85247 +85417 2 3 -30974 +31036 3 4 -8376 +8393 4 5 -11685 +11709 5 14 -12012 +12036 14 21451 -5825 +5837 @@ -40298,27 +40429,27 @@ 1 2 -96539 +96731 2 3 -28662 +28719 3 4 -13754 +13781 4 9 -11866 +11889 9 122 -3299 +3306 @@ -40328,19 +40459,19 @@ cil_handler -101377 +101579 id -101377 +101579 impl -71371 +71513 index -77 +78 kind @@ -40348,15 +40479,15 @@ try_start -97541 +97736 try_end -99756 +99955 handler_start -101377 +101579 @@ -40370,7 +40501,7 @@ 1 2 -101377 +101579 @@ -40386,7 +40517,7 @@ 1 2 -101377 +101579 @@ -40402,7 +40533,7 @@ 1 2 -101377 +101579 @@ -40418,7 +40549,7 @@ 1 2 -101377 +101579 @@ -40434,7 +40565,7 @@ 1 2 -101377 +101579 @@ -40450,7 +40581,7 @@ 1 2 -101377 +101579 @@ -40466,22 +40597,22 @@ 1 2 -53737 +53845 2 3 -11145 +11167 3 5 -5421 +5432 5 17 -1065 +1068 @@ -40497,22 +40628,22 @@ 1 2 -53737 +53845 2 3 -11145 +11167 3 5 -5421 +5432 5 17 -1065 +1068 @@ -40528,17 +40659,17 @@ 1 2 -61817 +61940 2 3 -9330 +9348 3 4 -223 +224 @@ -40554,17 +40685,17 @@ 1 2 -54764 +54874 2 3 -10839 +10860 3 7 -5524 +5535 7 @@ -40585,22 +40716,22 @@ 1 2 -54287 +54396 2 3 -11058 +11080 3 6 -5519 +5530 6 16 -506 +507 @@ -40616,22 +40747,22 @@ 1 2 -53737 +53845 2 3 -11145 +11167 3 5 -5421 +5432 5 17 -1065 +1068 @@ -41294,12 +41425,12 @@ 1 2 -94246 +94434 2 8 -3295 +3301 @@ -41315,7 +41446,7 @@ 1 2 -97541 +97736 @@ -41331,12 +41462,12 @@ 1 2 -94246 +94434 2 8 -3295 +3301 @@ -41352,12 +41483,12 @@ 1 2 -95283 +95473 2 4 -2258 +2262 @@ -41373,12 +41504,12 @@ 1 2 -95327 +95517 2 3 -2214 +2218 @@ -41394,12 +41525,12 @@ 1 2 -94246 +94434 2 8 -3295 +3301 @@ -41415,12 +41546,12 @@ 1 2 -98529 +98726 2 7 -1226 +1228 @@ -41436,7 +41567,7 @@ 1 2 -99756 +99955 @@ -41452,12 +41583,12 @@ 1 2 -98529 +98726 2 7 -1226 +1228 @@ -41473,7 +41604,7 @@ 1 2 -99581 +99779 2 @@ -41494,7 +41625,7 @@ 1 2 -99756 +99955 @@ -41510,12 +41641,12 @@ 1 2 -98529 +98726 2 7 -1226 +1228 @@ -41531,7 +41662,7 @@ 1 2 -101377 +101579 @@ -41547,7 +41678,7 @@ 1 2 -101377 +101579 @@ -41563,7 +41694,7 @@ 1 2 -101377 +101579 @@ -41579,7 +41710,7 @@ 1 2 -101377 +101579 @@ -41595,7 +41726,7 @@ 1 2 -101377 +101579 @@ -41611,7 +41742,7 @@ 1 2 -101377 +101579 @@ -41621,15 +41752,15 @@ cil_handler_filter -807 +809 id -807 +809 filter_start -807 +809 @@ -41643,7 +41774,7 @@ 1 2 -807 +809 @@ -41659,7 +41790,7 @@ 1 2 -807 +809 @@ -41669,15 +41800,15 @@ cil_handler_type -43774 +43862 id -43774 +43862 catch_type -1260 +1263 @@ -41691,7 +41822,7 @@ 1 2 -43774 +43862 @@ -41712,12 +41843,12 @@ 2 3 -267 +268 3 4 -150 +151 4 @@ -41752,11 +41883,11 @@ cil_method_stack_size -1724452 +1727894 method -1724452 +1727894 size @@ -41774,7 +41905,7 @@ 1 2 -1724452 +1727894 @@ -41855,110 +41986,110 @@ cil_public -1908458 +1912268 id -1908458 +1912268 cil_private -927598 +929450 id -927598 +929450 cil_protected -1815934 +1819559 id -1815934 +1819559 cil_internal -41633 +41716 id -41633 +41716 cil_static -793908 +795493 id -793908 +795493 cil_sealed -356107 +356818 id -356107 +356818 cil_virtual -676747 +678098 id -676747 +678098 cil_abstract -164975 +165304 id -164975 +165304 cil_class -238259 +238735 id -238259 +238735 cil_interface -16528 +16561 id -16528 +16561 @@ -41987,37 +42118,37 @@ cil_specialname -809970 +811587 id -809970 +811587 cil_newslot -421740 +422582 id -421740 +422582 cil_base_class -235281 +235750 id -235281 +235750 base -21381 +21423 @@ -42031,7 +42162,7 @@ 1 2 -235281 +235750 @@ -42047,27 +42178,27 @@ 1 2 -12299 +12323 2 3 -3854 +3862 3 4 -1611 +1614 4 7 -1888 +1892 7 84 -1606 +1609 86 @@ -42082,15 +42213,15 @@ cil_base_interface -125045 +125295 id -68509 +68646 base -31154 +31216 @@ -42104,27 +42235,27 @@ 1 2 -47634 +47729 2 3 -8103 +8119 3 5 -6254 +6266 5 9 -5368 +5379 9 25 -1148 +1150 @@ -42140,27 +42271,27 @@ 1 2 -22447 +22491 2 3 -3426 +3433 3 5 -2516 +2521 5 30 -2341 +2345 30 2180 -423 +424 @@ -42170,15 +42301,15 @@ cil_enum_underlying_type -14051 +14079 id -14051 +14079 underlying -38 +39 @@ -42192,7 +42323,7 @@ 1 2 -14051 +14079 @@ -42253,11 +42384,11 @@ cil_type_parameter -184619 +184987 unbound -103781 +103988 index @@ -42265,7 +42396,7 @@ param -184619 +184987 @@ -42279,22 +42410,22 @@ 1 2 -74890 +75039 2 3 -18976 +19014 3 13 -8147 +8163 13 22 -1766 +1770 @@ -42310,22 +42441,22 @@ 1 2 -74890 +75039 2 3 -18976 +19014 3 13 -8147 +8163 13 22 -1766 +1770 @@ -42573,7 +42704,7 @@ 1 2 -184619 +184987 @@ -42589,7 +42720,7 @@ 1 2 -184619 +184987 @@ -42599,11 +42730,11 @@ cil_type_argument -736442 +737912 bound -480914 +481874 index @@ -42611,7 +42742,7 @@ t -251975 +252478 @@ -42625,17 +42756,17 @@ 1 2 -335879 +336549 2 3 -117253 +117487 3 22 -27781 +27836 @@ -42651,17 +42782,17 @@ 1 2 -340780 +341460 2 3 -115141 +115371 3 22 -24992 +25042 @@ -42889,27 +43020,27 @@ 1 2 -100228 +100428 2 3 -72685 +72830 3 4 -42450 +42535 4 6 -20086 +20126 6 4208 -16523 +16556 @@ -42925,17 +43056,17 @@ 1 2 -190635 +191015 2 3 -55436 +55547 3 20 -5903 +5915 @@ -43036,19 +43167,19 @@ cil_attribute -328023 +328678 attributeid -328023 +328678 element -248388 +248884 constructor -3372 +3379 @@ -43062,7 +43193,7 @@ 1 2 -328023 +328678 @@ -43078,7 +43209,7 @@ 1 2 -328023 +328678 @@ -43094,17 +43225,17 @@ 1 2 -197181 +197574 2 3 -36663 +36737 3 92 -14542 +14571 @@ -43120,17 +43251,17 @@ 1 2 -213023 +213449 2 3 -30969 +31031 3 7 -4395 +4403 @@ -43146,7 +43277,7 @@ 1 2 -554 +555 2 @@ -43166,22 +43297,22 @@ 5 8 -306 +307 8 11 -262 +263 11 19 -267 +268 19 33 -257 +258 33 @@ -43212,12 +43343,12 @@ 1 2 -598 +599 2 3 -384 +385 3 @@ -43247,12 +43378,12 @@ 17 31 -262 +263 31 50 -257 +258 50 @@ -43272,11 +43403,11 @@ cil_attribute_named_argument -3835 +3842 attribute_id -3343 +3350 param @@ -43284,7 +43415,7 @@ value -1090 +1092 @@ -43298,12 +43429,12 @@ 1 2 -2925 +2930 2 3 -345 +346 3 @@ -43324,12 +43455,12 @@ 1 2 -2925 +2930 2 3 -403 +404 3 @@ -43467,7 +43598,7 @@ 1 2 -720 +721 2 @@ -43498,7 +43629,7 @@ 1 2 -1061 +1063 2 @@ -43513,11 +43644,11 @@ cil_attribute_positional_argument -87062 +87236 attribute_id -83894 +84061 index @@ -43525,7 +43656,7 @@ value -15681 +15713 @@ -43539,12 +43670,12 @@ 1 2 -81212 +81374 2 7 -2681 +2687 @@ -43560,12 +43691,12 @@ 1 2 -81222 +81384 2 7 -2672 +2677 @@ -43658,22 +43789,22 @@ 1 2 -11987 +12011 2 3 -1990 +1994 3 8 -1207 +1209 8 5463 -496 +497 @@ -43689,12 +43820,12 @@ 1 2 -15526 +15557 2 6 -155 +156 @@ -43704,19 +43835,19 @@ metadata_handle -6171670 +6184267 entity -5681216 +5692834 location -3411 +3418 handle -273823 +274370 @@ -43730,17 +43861,17 @@ 1 2 -5208926 +5219601 2 3 -463281 +464205 3 638 -9009 +9027 @@ -43756,12 +43887,12 @@ 1 2 -5440620 +5451758 2 59 -240596 +241076 @@ -43782,62 +43913,62 @@ 3 36 -257 +258 36 79 -267 +268 79 130 -257 +258 130 200 -257 +258 200 289 -262 +263 290 404 -257 +258 407 529 -257 +258 531 748 -257 +258 749 1109 -257 +258 1116 1915 -257 +258 1920 4051 -257 +258 4053 50922 -257 +258 67370 @@ -43868,52 +43999,52 @@ 20 46 -267 +268 46 76 -262 +263 77 119 -257 +258 119 176 -257 +258 176 253 -257 +258 255 332 -262 +263 338 481 -257 +258 483 683 -257 +258 685 1273 -257 +258 1295 2685 -257 +258 2710 @@ -43934,62 +44065,62 @@ 1 2 -18913 +18951 2 3 -44972 +45061 3 5 -23887 +23935 5 6 -17492 +17527 6 7 -30103 +30163 7 9 -18952 +18990 9 11 -22062 +22106 11 13 -21011 +21053 13 21 -21439 +21482 21 39 -21103 +21145 39 83 -20548 +20589 83 -1061 -13335 +1062 +13362 @@ -44005,52 +44136,52 @@ 1 2 -62834 +62959 2 3 -21069 +21111 3 4 -46933 +47027 4 5 -18913 +18951 5 6 -19375 +19414 6 7 -22038 +22082 7 11 -23264 +23311 11 19 -21970 +22014 19 41 -20831 +20872 41 702 -16591 +16625 From f12befdcd0493bcb129860e9e5ddf53e37bef847 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Thu, 17 Dec 2020 12:14:51 +0100 Subject: [PATCH 5/5] Add extra test for collection initialization --- .../library-tests/csharp9/AnonymousObjectCreation.cs | 5 +++++ .../csharp9/AnonymousObjectCreation.expected | 1 + csharp/ql/test/library-tests/csharp9/PrintAst.expected | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs index 590490d43d5..da10c241883 100644 --- a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs +++ b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.cs @@ -19,4 +19,9 @@ public class AnonObj void M2(int x) { } D GetM() { return new(M2); } + + void MethodAdd() + { + List list = new();// { 1, 2, 3 }; todo: the initializer causes an extraction error + } } \ No newline at end of file diff --git a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected index 0f845115541..4e1357facb7 100644 --- a/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected +++ b/csharp/ql/test/library-tests/csharp9/AnonymousObjectCreation.expected @@ -2,5 +2,6 @@ implicitlyTypedObjectCreation | AnonymousObjectCreation.cs:7:31:7:35 | object creation of type List | | AnonymousObjectCreation.cs:13:17:13:35 | object creation of type AnonObj | | AnonymousObjectCreation.cs:14:16:14:20 | object creation of type AnonObj | +| AnonymousObjectCreation.cs:25:26:25:30 | object creation of type List | implicitlyTypedDelegateCreation | AnonymousObjectCreation.cs:21:23:21:29 | delegate creation of type D | diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index 098b664e9a6..b75cd6c3177 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -45,6 +45,15 @@ AnonymousObjectCreation.cs: # 21| 0: [ExplicitDelegateCreation] delegate creation of type D # 21| 0: [ImplicitDelegateCreation] delegate creation of type D # 21| 0: [MethodAccess] access to method M2 +# 23| 11: [Method] MethodAdd +# 23| -1: [TypeMention] Void +# 24| 4: [BlockStmt] {...} +# 25| 0: [LocalVariableDeclStmt] ... ...; +# 25| 0: [LocalVariableDeclAndInitExpr] List list = ... +# 25| -1: [TypeMention] List +# 25| 1: [TypeMention] int +# 25| 0: [LocalVariableAccess] access to local variable list +# 25| 1: [ObjectCreation] object creation of type List Discard.cs: # 3| [Class] Discard # 5| 5: [Method] M1