Merge pull request #11922 from michaelnebel/csharp11/strings

C# 11: String related functionality.
This commit is contained in:
Michael Nebel
2023-01-24 10:31:31 +01:00
committed by GitHub
45 changed files with 16829 additions and 8006 deletions

View File

@@ -0,0 +1,13 @@
class Expression extends @expr {
string toString() { none() }
}
class TypeOrRef extends @type_or_ref {
string toString() { none() }
}
from Expression e, int k, int kind, TypeOrRef t
where
expressions(e, k, t) and
if k = 135 then kind = 106 else kind = k
select e, kind, t

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
description: Remove UTF-8 expression kind.
compatibility: backwards
expressions.rel: run expressions.qlo

View File

@@ -2,7 +2,6 @@ using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Extraction.CSharp.Populators;
using Semmle.Extraction.Entities;
using Semmle.Extraction.Kinds;
namespace Semmle.Extraction.CSharp.Entities
@@ -107,6 +106,11 @@ namespace Semmle.Extraction.CSharp.Entities
return Expression.ValueAsString(val);
}
if (TryGetStringValueFromUtf8Literal(out var s))
{
return s;
}
return null;
}
}
@@ -181,6 +185,17 @@ namespace Semmle.Extraction.CSharp.Entities
return isTrue || isFalse;
}
private bool TryGetStringValueFromUtf8Literal(out string? value)
{
value = null;
if (Node.IsKind(SyntaxKind.Utf8StringLiteralExpression) && Node is LiteralExpressionSyntax literal)
{
value = literal.Token.ValueText;
return true;
}
return false;
}
public bool IsBoolLiteral()
{
return TryGetBoolValueFromLiteral(out var _);

View File

@@ -47,6 +47,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
case SyntaxKind.FalseLiteralExpression:
case SyntaxKind.TrueLiteralExpression:
case SyntaxKind.StringLiteralExpression:
case SyntaxKind.Utf8StringLiteralExpression:
case SyntaxKind.NullLiteralExpression:
case SyntaxKind.NumericLiteralExpression:
case SyntaxKind.CharacterLiteralExpression:

View File

@@ -27,7 +27,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
case SyntaxKind.InterpolatedStringText:
// Create a string literal
var interpolatedText = (InterpolatedStringTextSyntax)c;
new Expression(new ExpressionInfo(Context, Type, Context.CreateLocation(c.GetLocation()), ExprKind.STRING_LITERAL, this, child++, false, interpolatedText.TextToken.Text));
new Expression(new ExpressionInfo(Context, Type, Context.CreateLocation(c.GetLocation()), ExprKind.UTF16_STRING_LITERAL, this, child++, false, interpolatedText.TextToken.ValueText));
break;
default:
throw new InternalError(c, $"Unhandled interpolation kind {c.Kind()}");

View File

@@ -20,6 +20,8 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
{
case SyntaxKind.DefaultLiteralExpression:
return ExprKind.DEFAULT;
case SyntaxKind.Utf8StringLiteralExpression:
return ExprKind.UTF8_STRING_LITERAL;
case SyntaxKind.NullLiteralExpression:
info.SetType(null); // Don't use converted type.
return ExprKind.NULL_LITERAL;
@@ -63,7 +65,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
return ExprKind.FLOAT_LITERAL;
case SpecialType.System_String:
return ExprKind.STRING_LITERAL;
return ExprKind.UTF16_STRING_LITERAL;
case SpecialType.System_UInt16:
case SpecialType.System_UInt32:

View File

@@ -15,7 +15,7 @@ namespace Semmle.Extraction.Kinds
ULONG_LITERAL = 7,
FLOAT_LITERAL = 8,
DOUBLE_LITERAL = 9,
STRING_LITERAL = 10,
UTF16_STRING_LITERAL = 10,
NULL_LITERAL = 11,
THIS_ACCESS = 12,
BASE_ACCESS = 13,
@@ -129,6 +129,7 @@ namespace Semmle.Extraction.Kinds
SLICE_PATTERN = 132,
URSHIFT = 133,
ASSIGN_URSHIFT = 134,
UTF8_STRING_LITERAL = 135,
DEFINE_SYMBOL = 999,
}
}

View File

@@ -0,0 +1,6 @@
---
category: majorAnalysis
---
* Add extractor and library support for UTF-8 encoded strings.
* The `StringLiteral` class includes UTF-8 encoded strings.
* In the DB Schema `@string_literal_expr` is renamed to `@utf16_string_literal_expr`

View File

@@ -102,7 +102,8 @@ class DecimalLiteral extends RealLiteral, @decimal_literal_expr {
}
/**
* A `string` literal, for example `"Hello, World!"`.
* A `string` literal. Either a `string` literal (`StringLiteralUtf16`),
* or a `u8` literal (`StringLiteralUtf8`).
*/
class StringLiteral extends DotNet::StringLiteral, Literal, @string_literal_expr {
override string toString() { result = "\"" + this.getValue().replaceAll("\"", "\\\"") + "\"" }
@@ -110,6 +111,20 @@ class StringLiteral extends DotNet::StringLiteral, Literal, @string_literal_expr
override string getAPrimaryQlClass() { result = "StringLiteral" }
}
/**
* A `string` literal, for example `"Hello, World!"`.
*/
class StringLiteralUtf16 extends StringLiteral, @utf16_string_literal_expr {
override string getAPrimaryQlClass() { result = "StringLiteralUtf16" }
}
/**
* A `u8` literal, for example `"AUTH"u8`
*/
class StringLiteralUtf8 extends StringLiteral, @utf8_string_literal_expr {
override string getAPrimaryQlClass() { result = "StringLiteralUtf8" }
}
/**
* A `null` literal.
*/

View File

@@ -1005,7 +1005,7 @@ case @expr.kind of
| 7 = @ulong_literal_expr
| 8 = @float_literal_expr
| 9 = @double_literal_expr
| 10 = @string_literal_expr
| 10 = @utf16_string_literal_expr
| 11 = @null_literal_expr
/* primary & unary */
| 12 = @this_access_expr
@@ -1139,6 +1139,7 @@ case @expr.kind of
| 132 = @slice_pattern_expr
| 133 = @urshift_expr
| 134 = @assign_urshift_expr
| 135 = @utf8_string_literal_expr
/* Preprocessor */
| 999 = @define_symbol_expr
;
@@ -1152,6 +1153,7 @@ case @expr.kind of
@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;
@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr;
@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr
| @string_literal_expr | @null_literal_expr;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
description: Add UTF-8 expression kind.
compatibility: backwards

View File

@@ -232,10 +232,10 @@ collections.cs:
# 15| -1: [ObjectInitializer] { ..., ... }
# 15| 0: [MemberInitializer] ... = ...
# 15| 0: [FieldAccess] access to field a
# 15| 1: [StringLiteral] "Hello"
# 15| 1: [StringLiteralUtf16] "Hello"
# 15| 1: [MemberInitializer] ... = ...
# 15| 0: [FieldAccess] access to field b
# 15| 1: [StringLiteral] "World"
# 15| 1: [StringLiteralUtf16] "World"
# 16| 1: [ElementInitializer] call to method Add
# 16| 0: [IntLiteral] 1
# 16| 1: [ObjectCreation] object creation of type MyClass
@@ -243,10 +243,10 @@ collections.cs:
# 16| -1: [ObjectInitializer] { ..., ... }
# 16| 0: [MemberInitializer] ... = ...
# 16| 0: [FieldAccess] access to field a
# 16| 1: [StringLiteral] "Foo"
# 16| 1: [StringLiteralUtf16] "Foo"
# 16| 1: [MemberInitializer] ... = ...
# 16| 0: [FieldAccess] access to field b
# 16| 1: [StringLiteral] "Bar"
# 16| 1: [StringLiteralUtf16] "Bar"
constructor_init.cs:
# 1| [Class] BaseClass
# 3| 4: [Field] num
@@ -443,7 +443,7 @@ events.cs:
# 32| 0: [LocalVariableAccess] access to local variable result
# 32| 1: [DelegateCall] delegate call
# 32| -1: [LocalVariableAccess] access to local variable obj
# 32| 0: [StringLiteral] "string"
# 32| 0: [StringLiteralUtf16] "string"
# 33| 3: [ExprStmt] ...;
# 33| 0: [MethodCall] call to method RemoveEvent
# 33| -1: [LocalVariableAccess] access to local variable obj
@@ -549,13 +549,13 @@ indexers.cs:
# 22| 0: [IndexerCall] access to indexer
# 22| -1: [LocalVariableAccess] access to local variable inst
# 22| 0: [IntLiteral] 0
# 22| 1: [StringLiteral] "str1"
# 22| 1: [StringLiteralUtf16] "str1"
# 23| 2: [ExprStmt] ...;
# 23| 0: [AssignExpr] ... = ...
# 23| 0: [IndexerCall] access to indexer
# 23| -1: [LocalVariableAccess] access to local variable inst
# 23| 0: [IntLiteral] 1
# 23| 1: [StringLiteral] "str1"
# 23| 1: [StringLiteralUtf16] "str1"
# 24| 3: [ExprStmt] ...;
# 24| 0: [AssignExpr] ... = ...
# 24| 0: [IndexerCall] access to indexer
@@ -775,7 +775,7 @@ jumps.cs:
# 13| 0: [MethodCall] call to method WriteLine
# 13| -1: [TypeAccess] access to type Console
# 13| 0: [TypeMention] Console
# 13| 0: [StringLiteral] "BreakAndContinue"
# 13| 0: [StringLiteralUtf16] "BreakAndContinue"
# 16| 1: [ForStmt] for (...;...;...) ...
# 16| -1: [LocalVariableDeclAndInitExpr] Int32 i = ...
# 16| -1: [TypeMention] int
@@ -831,7 +831,7 @@ jumps.cs:
# 38| 0: [MethodCall] call to method WriteLine
# 38| -1: [TypeAccess] access to type Console
# 38| 0: [TypeMention] Console
# 38| 0: [StringLiteral] "Done"
# 38| 0: [StringLiteralUtf16] "Done"
lock.cs:
# 3| [Class] LockTest
# 5| 5: [Method] A
@@ -1152,9 +1152,9 @@ stmts.cs:
# 31| 2: [ConstCase] case ...:
# 31| 0: [ConstantPatternExpr,IntLiteral] 0
# 32| 3: [GotoCaseStmt] goto case ...;
# 32| 0: [StringLiteral] "123"
# 32| 0: [StringLiteralUtf16] "123"
# 33| 4: [ConstCase] case ...:
# 33| 0: [ConstantPatternExpr,StringLiteral] "123"
# 33| 0: [ConstantPatternExpr,StringLiteralUtf16] "123"
# 34| 5: [ExprStmt] ...;
# 34| 0: [AssignExpr] ... = ...
# 34| 0: [LocalVariableAccess] access to local variable select

View File

@@ -232,7 +232,7 @@ arguments.cs:
# 68| 1: [DefaultAttribute] [My(...)]
# 68| -1: [TypeMention] MyAttribute
# 68| 0: [BoolLiteral] true
# 68| 1: [StringLiteral] ""
# 68| 1: [StringLiteralUtf16] ""
# 68| 2: [IntLiteral] 0
# 69| 4: [BlockStmt] {...}
# 72| [Class] MyAttribute

View File

@@ -1,40 +1,40 @@
attributes.cs:
# 10| [AssemblyAttribute] [assembly: AssemblyTitle(...)]
# 10| -1: [TypeMention] AssemblyTitleAttribute
# 10| 0: [StringLiteral] "C# attributes test"
# 10| 0: [StringLiteralUtf16] "C# attributes test"
# 11| [AssemblyAttribute] [assembly: AssemblyDescription(...)]
# 11| -1: [TypeMention] AssemblyDescriptionAttribute
# 11| 0: [StringLiteral] "A test of C# attributes"
# 11| 0: [StringLiteralUtf16] "A test of C# attributes"
# 12| [AssemblyAttribute] [assembly: AssemblyConfiguration(...)]
# 12| -1: [TypeMention] AssemblyConfigurationAttribute
# 12| 0: [StringLiteral] ""
# 12| 0: [StringLiteralUtf16] ""
# 13| [AssemblyAttribute] [assembly: AssemblyCompany(...)]
# 13| -1: [TypeMention] AssemblyCompanyAttribute
# 13| 0: [StringLiteral] "Semmle Plc"
# 13| 0: [StringLiteralUtf16] "Semmle Plc"
# 14| [AssemblyAttribute] [assembly: AssemblyProduct(...)]
# 14| -1: [TypeMention] AssemblyProductAttribute
# 14| 0: [StringLiteral] "Odasa"
# 14| 0: [StringLiteralUtf16] "Odasa"
# 15| [AssemblyAttribute] [assembly: AssemblyCopyright(...)]
# 15| -1: [TypeMention] AssemblyCopyrightAttribute
# 15| 0: [StringLiteral] "Copyright © Semmle 2018"
# 15| 0: [StringLiteralUtf16] "Copyright © Semmle 2018"
# 16| [AssemblyAttribute] [assembly: AssemblyTrademark(...)]
# 16| -1: [TypeMention] AssemblyTrademarkAttribute
# 16| 0: [StringLiteral] ""
# 16| 0: [StringLiteralUtf16] ""
# 17| [AssemblyAttribute] [assembly: AssemblyCulture(...)]
# 17| -1: [TypeMention] AssemblyCultureAttribute
# 17| 0: [StringLiteral] ""
# 17| 0: [StringLiteralUtf16] ""
# 22| [AssemblyAttribute] [assembly: ComVisible(...)]
# 22| -1: [TypeMention] ComVisibleAttribute
# 22| 0: [BoolLiteral] false
# 25| [AssemblyAttribute] [assembly: Guid(...)]
# 25| -1: [TypeMention] GuidAttribute
# 25| 0: [StringLiteral] "2f70fdd6-14aa-4850-b053-d547adb1f476"
# 25| 0: [StringLiteralUtf16] "2f70fdd6-14aa-4850-b053-d547adb1f476"
# 37| [AssemblyAttribute] [assembly: AssemblyVersion(...)]
# 37| -1: [TypeMention] AssemblyVersionAttribute
# 37| 0: [StringLiteral] "1.0.0.0"
# 37| 0: [StringLiteralUtf16] "1.0.0.0"
# 38| [AssemblyAttribute] [assembly: AssemblyFileVersion(...)]
# 38| -1: [TypeMention] AssemblyFileVersionAttribute
# 38| 0: [StringLiteral] "1.0.0.0"
# 38| 0: [StringLiteralUtf16] "1.0.0.0"
# 40| [AssemblyAttribute] [assembly: Args(...)]
# 40| -1: [TypeMention] ArgsAttribute
# 40| 0: [IntLiteral] 0
@@ -107,7 +107,7 @@ attributes.cs:
#-----| 0: (Attributes)
# 46| 1: [DefaultAttribute] [Conditional(...)]
# 46| -1: [TypeMention] ConditionalAttribute
# 46| 0: [StringLiteral] "DEBUG2"
# 46| 0: [StringLiteralUtf16] "DEBUG2"
# 47| 4: [BlockStmt] {...}
# 50| [Class] Bar
# 52| 5: [Method] inc
@@ -136,7 +136,7 @@ attributes.cs:
# 57| 1: [DefaultAttribute] [My(...)]
# 57| -1: [TypeMention] MyAttribute
# 57| 0: [BoolLiteral] true
# 57| 1: [StringLiteral] ""
# 57| 1: [StringLiteralUtf16] ""
# 57| 2: [IntLiteral] 0
# 58| 2: [DefaultAttribute] [My2(...)]
# 58| -1: [TypeMention] My2Attribute

View File

@@ -43,7 +43,7 @@ comments2.cs:
# 52| 3: [Getter] get_S1
# 52| 4: [BlockStmt] {...}
# 52| 0: [ReturnStmt] return ...;
# 52| 0: [StringLiteral] ""
# 52| 0: [StringLiteralUtf16] ""
# 53| 4: [Setter] set_S1
#-----| 2: (Parameters)
# 53| 0: [Parameter] value

View File

@@ -0,0 +1,623 @@
GenericAttribute.cs:
# 3| [GenericAssemblyAttribute] [assembly: MyGeneric<Int32>(...)]
# 3| 0: [TypeMention] MyGenericAttribute<int>
# 3| 1: [TypeMention] int
# 4| [GenericModuleAttribute] [module: MyGeneric2<Object,Object>(...)]
# 4| 0: [TypeMention] MyGeneric2Attribute<object, object>
# 4| 1: [TypeMention] object
# 4| 2: [TypeMention] object
# 6| [Class] MyGenericAttribute<>
#-----| 1: (Type parameters)
# 6| 0: [TypeParameter] T
#-----| 3: (Base types)
# 6| 0: [TypeMention] Attribute
# 7| [Class] MyGeneric2Attribute<,>
#-----| 1: (Type parameters)
# 7| 0: [TypeParameter] T
# 7| 1: [TypeParameter] U
#-----| 3: (Base types)
# 7| 0: [TypeMention] Attribute
# 9| [Class] TestGenericAttribute
# 13| 5: [Method] M1
# 13| -1: [TypeMention] Void
#-----| 0: (Attributes)
# 12| 1: [GenericDefaultAttribute] [MyGeneric<Int32>(...)]
# 12| 0: [TypeMention] MyGenericAttribute<int>
# 12| 1: [TypeMention] int
# 13| 4: [BlockStmt] {...}
# 16| 6: [Method] M2
# 16| -1: [TypeMention] Void
#-----| 0: (Attributes)
# 15| 1: [GenericDefaultAttribute] [MyGeneric<String>(...)]
# 15| 0: [TypeMention] MyGenericAttribute<string>
# 15| 1: [TypeMention] string
# 16| 4: [BlockStmt] {...}
# 19| 7: [Method] M3
# 19| -1: [TypeMention] Void
#-----| 0: (Attributes)
# 18| 1: [GenericDefaultAttribute] [MyGeneric2<Int32,String>(...)]
# 18| 0: [TypeMention] MyGeneric2Attribute<int, string>
# 18| 1: [TypeMention] int
# 18| 2: [TypeMention] string
# 19| 4: [BlockStmt] {...}
# 22| 8: [Method] M4
# 22| -1: [TypeMention] int
#-----| 0: (Attributes)
# 21| 1: [GenericReturnAttribute] [return: MyGeneric<Object>(...)]
# 21| 0: [TypeMention] MyGenericAttribute<object>
# 21| 1: [TypeMention] object
# 22| 4: [BlockStmt] {...}
# 22| 0: [ReturnStmt] return ...;
# 22| 0: [IntLiteral] 0
ListPattern.cs:
# 3| [Class] ListPattern
# 5| 5: [Method] M1
# 5| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 5| 0: [Parameter] x
# 5| -1: [TypeMention] Int32[]
# 5| 1: [TypeMention] int
# 6| 4: [BlockStmt] {...}
# 7| 0: [IfStmt] if (...) ...
# 7| 0: [IsExpr] ... is ...
# 7| 0: [ParameterAccess] access to parameter x
# 7| 1: [ListPatternExpr] [ ... ]
# 7| 1: [BlockStmt] {...}
# 8| 1: [IfStmt] if (...) ...
# 8| 0: [IsExpr] ... is ...
# 8| 0: [ParameterAccess] access to parameter x
# 8| 1: [ListPatternExpr] [ ... ]
# 8| 0: [ConstantPatternExpr,IntLiteral] 1
# 8| 1: [BlockStmt] {...}
# 9| 2: [IfStmt] if (...) ...
# 9| 0: [IsExpr] ... is ...
# 9| 0: [ParameterAccess] access to parameter x
# 9| 1: [ListPatternExpr] [ ... ]
# 9| 0: [DiscardPatternExpr] _
# 9| 1: [ConstantPatternExpr,IntLiteral] 2
# 9| 1: [BlockStmt] {...}
# 10| 3: [IfStmt] if (...) ...
# 10| 0: [IsExpr] ... is ...
# 10| 0: [ParameterAccess] access to parameter x
# 10| 1: [ListPatternExpr] [ ... ]
# 10| 0: [VariablePatternExpr] Int32 y
# 10| 1: [ConstantPatternExpr,IntLiteral] 3
# 10| 2: [ConstantPatternExpr,IntLiteral] 4
# 10| 1: [BlockStmt] {...}
# 11| 4: [IfStmt] if (...) ...
# 11| 0: [IsExpr] ... is ...
# 11| 0: [ParameterAccess] access to parameter x
# 11| 1: [ListPatternExpr] [ ... ]
# 11| 0: [OrPatternExpr] ... or ...
# 11| 0: [ConstantPatternExpr,IntLiteral] 5
# 11| 1: [ConstantPatternExpr,IntLiteral] 6
# 11| 1: [DiscardPatternExpr] _
# 11| 2: [ConstantPatternExpr,IntLiteral] 7
# 11| 1: [BlockStmt] {...}
# 12| 5: [IfStmt] if (...) ...
# 12| 0: [IsExpr] ... is ...
# 12| 0: [ParameterAccess] access to parameter x
# 12| 1: [ListPatternExpr] [ ... ]
# 12| 0: [VariablePatternExpr] Int32 a
# 12| 1: [SlicePatternExpr] ..
# 12| 2: [ConstantPatternExpr,IntLiteral] 2
# 12| 1: [BlockStmt] {...}
# 13| 6: [IfStmt] if (...) ...
# 13| 0: [IsExpr] ... is ...
# 13| 0: [ParameterAccess] access to parameter x
# 13| 1: [ListPatternExpr] [ ... ]
# 13| 0: [VariablePatternExpr] Int32 b
# 13| 1: [SlicePatternExpr] ..
# 13| 0: [RecursivePatternExpr] { ... }
# 13| 3: [PropertyPatternExpr] { ... }
# 13| 0: [LabeledPatternExpr,OrPatternExpr] ... or ...
# 13| 0: [ConstantPatternExpr,IntLiteral] 2
# 13| 1: [ConstantPatternExpr,IntLiteral] 5
# 13| 2: [ConstantPatternExpr,IntLiteral] 2
# 13| 1: [BlockStmt] {...}
# 16| 6: [Method] M2
# 16| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 16| 0: [Parameter] x
# 16| -1: [TypeMention] String[]
# 16| 1: [TypeMention] string
# 17| 4: [BlockStmt] {...}
# 18| 0: [SwitchStmt] switch (...) {...}
# 18| 0: [ParameterAccess] access to parameter x
# 20| 0: [CaseStmt] case ...:
# 20| 0: [ListPatternExpr] [ ... ]
# 21| 1: [BreakStmt] break;
# 22| 2: [CaseStmt] case ...:
# 22| 0: [ListPatternExpr] [ ... ]
# 22| 0: [ConstantPatternExpr,StringLiteralUtf16] "A"
# 23| 3: [BreakStmt] break;
# 24| 4: [CaseStmt] case ...:
# 24| 0: [ListPatternExpr] [ ... ]
# 24| 0: [DiscardPatternExpr] _
# 24| 1: [ConstantPatternExpr,StringLiteralUtf16] "B"
# 25| 5: [BreakStmt] break;
# 26| 6: [CaseStmt] case ...:
# 26| 0: [ListPatternExpr] [ ... ]
# 26| 0: [VariablePatternExpr] String y
# 26| 1: [ConstantPatternExpr,StringLiteralUtf16] "C"
# 26| 2: [ConstantPatternExpr,StringLiteralUtf16] "D"
# 27| 7: [BreakStmt] break;
# 28| 8: [CaseStmt] case ...:
# 28| 0: [ListPatternExpr] [ ... ]
# 28| 0: [OrPatternExpr] ... or ...
# 28| 0: [ConstantPatternExpr,StringLiteralUtf16] "E"
# 28| 1: [ConstantPatternExpr,StringLiteralUtf16] "F"
# 28| 1: [DiscardPatternExpr] _
# 28| 2: [ConstantPatternExpr,StringLiteralUtf16] "G"
# 29| 9: [BreakStmt] break;
# 30| 10: [CaseStmt] case ...:
# 30| 0: [ListPatternExpr] [ ... ]
# 30| 0: [VariablePatternExpr] String a
# 30| 1: [SlicePatternExpr] ..
# 30| 2: [ConstantPatternExpr,StringLiteralUtf16] "H"
# 31| 11: [BreakStmt] break;
# 32| 12: [CaseStmt] case ...:
# 32| 0: [ListPatternExpr] [ ... ]
# 32| 0: [VariablePatternExpr] String b
# 32| 1: [SlicePatternExpr] ..
# 32| 0: [VariablePatternExpr] String[] c
# 32| 2: [ConstantPatternExpr,StringLiteralUtf16] "I"
# 33| 13: [BreakStmt] break;
# 34| 14: [DefaultCase] default:
# 35| 15: [BreakStmt] break;
NativeInt.cs:
# 1| [Class] NativeInt
# 3| 5: [Method] M1
# 3| -1: [TypeMention] Void
# 4| 4: [BlockStmt] {...}
# 5| 0: [LocalVariableDeclStmt] ... ...;
# 5| 0: [LocalVariableDeclAndInitExpr] IntPtr x1 = ...
# 5| -1: [TypeMention] IntPtr
# 5| 0: [LocalVariableAccess] access to local variable x1
# 5| 1: [CastExpr] (...) ...
# 5| 1: [IntLiteral] 0
# 6| 1: [LocalVariableDeclStmt] ... ...;
# 6| 0: [LocalVariableDeclAndInitExpr] IntPtr x2 = ...
# 6| -1: [TypeMention] IntPtr
# 6| 0: [LocalVariableAccess] access to local variable x2
# 6| 1: [CastExpr] (...) ...
# 6| 0: [TypeAccess] access to type IntPtr
# 6| 0: [TypeMention] IntPtr
# 6| 1: [IntLiteral] 0
# 8| 2: [LocalVariableDeclStmt] ... ...;
# 8| 0: [LocalVariableDeclAndInitExpr] UIntPtr y1 = ...
# 8| -1: [TypeMention] UIntPtr
# 8| 0: [LocalVariableAccess] access to local variable y1
# 8| 1: [CastExpr] (...) ...
# 8| 1: [IntLiteral] 0
# 9| 3: [LocalVariableDeclStmt] ... ...;
# 9| 0: [LocalVariableDeclAndInitExpr] UIntPtr y2 = ...
# 9| -1: [TypeMention] UIntPtr
# 9| 0: [LocalVariableAccess] access to local variable y2
# 9| 1: [CastExpr] (...) ...
# 9| 0: [TypeAccess] access to type UIntPtr
# 9| 0: [TypeMention] UIntPtr
# 9| 1: [IntLiteral] 0
Operators.cs:
# 2| [Class] MyClass
# 4| 5: [Method] M1
# 4| -1: [TypeMention] Void
# 5| 4: [BlockStmt] {...}
# 6| 0: [LocalVariableDeclStmt] ... ...;
# 6| 0: [LocalVariableDeclAndInitExpr] Int32 x1 = ...
# 6| -1: [TypeMention] int
# 6| 0: [LocalVariableAccess] access to local variable x1
# 6| 1: [IntLiteral] 1
# 7| 1: [LocalVariableDeclStmt] ... ...;
# 7| 0: [LocalVariableDeclAndInitExpr] Int32 x2 = ...
# 7| -1: [TypeMention] int
# 7| 0: [LocalVariableAccess] access to local variable x2
# 7| 1: [UnsignedRightShiftExpr] ... >>> ...
# 7| 0: [LocalVariableAccess] access to local variable x1
# 7| 1: [IntLiteral] 2
# 9| 2: [LocalVariableDeclStmt] ... ...;
# 9| 0: [LocalVariableDeclAndInitExpr] Int32 y1 = ...
# 9| -1: [TypeMention] int
# 9| 0: [LocalVariableAccess] access to local variable y1
# 9| 1: [UnaryMinusExpr] -...
# 9| 0: [IntLiteral] 2
# 10| 3: [LocalVariableDeclStmt] ... ...;
# 10| 0: [LocalVariableDeclAndInitExpr] Int32 y2 = ...
# 10| -1: [TypeMention] int
# 10| 0: [LocalVariableAccess] access to local variable y2
# 10| 1: [UnsignedRightShiftExpr] ... >>> ...
# 10| 0: [LocalVariableAccess] access to local variable y1
# 10| 1: [IntLiteral] 3
# 12| 4: [LocalVariableDeclStmt] ... ...;
# 12| 0: [LocalVariableDeclAndInitExpr] Int32 z = ...
# 12| -1: [TypeMention] int
# 12| 0: [LocalVariableAccess] access to local variable z
# 12| 1: [UnaryMinusExpr] -...
# 12| 0: [IntLiteral] 4
# 13| 5: [ExprStmt] ...;
# 13| 0: [AssignUnsighedRightShiftExpr] ... >>>= ...
# 13| 0: [LocalVariableAccess] access to local variable z
# 13| 1: [IntLiteral] 5
# 17| [Class] MyOperatorClass
# 19| 5: [UnsignedRightShiftOperator] >>>
# 19| -1: [TypeMention] MyOperatorClass
#-----| 2: (Parameters)
# 19| 0: [Parameter] a
# 19| -1: [TypeMention] MyOperatorClass
# 19| 1: [Parameter] b
# 19| -1: [TypeMention] MyOperatorClass
# 19| 4: [BlockStmt] {...}
# 19| 0: [ReturnStmt] return ...;
# 19| 0: [NullLiteral] null
PatternMatchSpan.cs:
# 3| [Class] PatternMatchSpan
# 6| 5: [Method] M1
# 6| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 6| 0: [Parameter] x1
# 6| -1: [TypeMention] ReadOnlySpan<char>
# 6| 1: [TypeMention] char
# 7| 4: [BlockStmt] {...}
# 8| 0: [IfStmt] if (...) ...
# 8| 0: [IsExpr] ... is ...
# 8| 0: [ParameterAccess] access to parameter x1
# 8| 1: [ConstantPatternExpr,StringLiteralUtf16] "ABC"
# 8| 1: [BlockStmt] {...}
# 11| 6: [Method] M2
# 11| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 11| 0: [Parameter] x2
# 11| -1: [TypeMention] Span<char>
# 11| 1: [TypeMention] char
# 12| 4: [BlockStmt] {...}
# 13| 0: [SwitchStmt] switch (...) {...}
# 13| 0: [ParameterAccess] access to parameter x2
# 15| 0: [ConstCase] case ...:
# 15| 0: [ConstantPatternExpr,StringLiteralUtf16] "DEF"
# 15| 1: [BlockStmt] {...}
# 15| 0: [BreakStmt] break;
# 16| 2: [DefaultCase] default:
# 16| 3: [BlockStmt] {...}
# 16| 0: [BreakStmt] break;
SignAnalysis.cs:
# 1| [Class] MySignAnalysis
# 4| 5: [Method] UnsignedRightShiftSign
# 4| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 4| 0: [Parameter] x
# 4| -1: [TypeMention] int
# 4| 1: [Parameter] y
# 4| -1: [TypeMention] int
# 5| 4: [BlockStmt] {...}
# 6| 0: [LocalVariableDeclStmt] ... ...;
# 6| 0: [LocalVariableDeclExpr] Int32 z
# 6| 0: [TypeMention] int
# 7| 1: [IfStmt] if (...) ...
# 7| 0: [EQExpr] ... == ...
# 7| 0: [ParameterAccess] access to parameter x
# 7| 1: [IntLiteral] 0
# 8| 1: [BlockStmt] {...}
# 9| 0: [ExprStmt] ...;
# 9| 0: [AssignExpr] ... = ...
# 9| 0: [LocalVariableAccess] access to local variable z
# 9| 1: [UnsignedRightShiftExpr] ... >>> ...
# 9| 0: [ParameterAccess] access to parameter x
# 9| 1: [ParameterAccess] access to parameter y
# 12| 2: [IfStmt] if (...) ...
# 12| 0: [EQExpr] ... == ...
# 12| 0: [ParameterAccess] access to parameter y
# 12| 1: [IntLiteral] 0
# 13| 1: [BlockStmt] {...}
# 14| 0: [ExprStmt] ...;
# 14| 0: [AssignExpr] ... = ...
# 14| 0: [LocalVariableAccess] access to local variable z
# 14| 1: [UnsignedRightShiftExpr] ... >>> ...
# 14| 0: [ParameterAccess] access to parameter x
# 14| 1: [ParameterAccess] access to parameter y
# 17| 3: [IfStmt] if (...) ...
# 17| 0: [LogicalAndExpr] ... && ...
# 17| 0: [GTExpr] ... > ...
# 17| 0: [ParameterAccess] access to parameter x
# 17| 1: [IntLiteral] 0
# 17| 1: [EQExpr] ... == ...
# 17| 0: [ParameterAccess] access to parameter y
# 17| 1: [IntLiteral] 0
# 18| 1: [BlockStmt] {...}
# 19| 0: [ExprStmt] ...;
# 19| 0: [AssignExpr] ... = ...
# 19| 0: [LocalVariableAccess] access to local variable z
# 19| 1: [UnsignedRightShiftExpr] ... >>> ...
# 19| 0: [ParameterAccess] access to parameter x
# 19| 1: [ParameterAccess] access to parameter y
# 22| 4: [IfStmt] if (...) ...
# 22| 0: [LogicalAndExpr] ... && ...
# 22| 0: [GTExpr] ... > ...
# 22| 0: [ParameterAccess] access to parameter x
# 22| 1: [IntLiteral] 0
# 22| 1: [GTExpr] ... > ...
# 22| 0: [ParameterAccess] access to parameter y
# 22| 1: [IntLiteral] 0
# 23| 1: [BlockStmt] {...}
# 24| 0: [ExprStmt] ...;
# 24| 0: [AssignExpr] ... = ...
# 24| 0: [LocalVariableAccess] access to local variable z
# 24| 1: [UnsignedRightShiftExpr] ... >>> ...
# 24| 0: [ParameterAccess] access to parameter x
# 24| 1: [ParameterAccess] access to parameter y
# 27| 5: [IfStmt] if (...) ...
# 27| 0: [LogicalAndExpr] ... && ...
# 27| 0: [GTExpr] ... > ...
# 27| 0: [ParameterAccess] access to parameter x
# 27| 1: [IntLiteral] 0
# 27| 1: [LTExpr] ... < ...
# 27| 0: [ParameterAccess] access to parameter y
# 27| 1: [IntLiteral] 0
# 28| 1: [BlockStmt] {...}
# 29| 0: [ExprStmt] ...;
# 29| 0: [AssignExpr] ... = ...
# 29| 0: [LocalVariableAccess] access to local variable z
# 29| 1: [UnsignedRightShiftExpr] ... >>> ...
# 29| 0: [ParameterAccess] access to parameter x
# 29| 1: [ParameterAccess] access to parameter y
# 32| 6: [IfStmt] if (...) ...
# 32| 0: [LogicalAndExpr] ... && ...
# 32| 0: [LTExpr] ... < ...
# 32| 0: [ParameterAccess] access to parameter x
# 32| 1: [IntLiteral] 0
# 32| 1: [GTExpr] ... > ...
# 32| 0: [ParameterAccess] access to parameter y
# 32| 1: [IntLiteral] 0
# 33| 1: [BlockStmt] {...}
# 34| 0: [ExprStmt] ...;
# 34| 0: [AssignExpr] ... = ...
# 34| 0: [LocalVariableAccess] access to local variable z
# 34| 1: [UnsignedRightShiftExpr] ... >>> ...
# 34| 0: [ParameterAccess] access to parameter x
# 34| 1: [ParameterAccess] access to parameter y
# 37| 7: [IfStmt] if (...) ...
# 37| 0: [LogicalAndExpr] ... && ...
# 37| 0: [LTExpr] ... < ...
# 37| 0: [ParameterAccess] access to parameter x
# 37| 1: [IntLiteral] 0
# 37| 1: [LTExpr] ... < ...
# 37| 0: [ParameterAccess] access to parameter y
# 37| 1: [IntLiteral] 0
# 38| 1: [BlockStmt] {...}
# 39| 0: [ExprStmt] ...;
# 39| 0: [AssignExpr] ... = ...
# 39| 0: [LocalVariableAccess] access to local variable z
# 39| 1: [UnsignedRightShiftExpr] ... >>> ...
# 39| 0: [ParameterAccess] access to parameter x
# 39| 1: [ParameterAccess] access to parameter y
StaticInterfaceMembers.cs:
# 1| [Interface] INumber<>
#-----| 1: (Type parameters)
# 1| 0: [TypeParameter] T
# 3| 4: [IncrementOperator] ++
# 3| -1: [TypeMention] T
#-----| 2: (Parameters)
# 3| 0: [Parameter] other
# 3| -1: [TypeMention] T
# 5| 5: [DecrementOperator] --
# 5| -1: [TypeMention] T
#-----| 2: (Parameters)
# 5| 0: [Parameter] other
# 5| -1: [TypeMention] T
# 5| 4: [ParameterAccess] access to parameter other
# 7| 6: [Method] Add
# 7| -1: [TypeMention] T
#-----| 2: (Parameters)
# 7| 0: [Parameter] left
# 7| -1: [TypeMention] T
# 7| 1: [Parameter] right
# 7| -1: [TypeMention] T
# 9| 7: [Method] Subtract
# 9| -1: [TypeMention] T
#-----| 2: (Parameters)
# 9| 0: [Parameter] left
# 9| -1: [TypeMention] T
# 9| 1: [Parameter] right
# 9| -1: [TypeMention] T
# 9| 4: [ParameterAccess] access to parameter left
# 11| 8: [Method] Zero
# 11| -1: [TypeMention] T
# 11| 4: [DefaultValueExpr] default(...)
# 11| 0: [TypeAccess] access to type T
# 11| 0: [TypeMention] T
# 14| [Class] Complex
#-----| 3: (Base types)
# 16| 4: [Property] Real
# 16| -1: [TypeMention] double
# 16| 2: [AssignExpr] ... = ...
# 16| 0: [PropertyCall] access to property Real
# 16| 1: [DoubleLiteral] 0
# 16| 3: [Getter] get_Real
# 16| 4: [Setter] set_Real
#-----| 2: (Parameters)
# 16| 0: [Parameter] value
# 17| 5: [Property] Imaginary
# 17| -1: [TypeMention] double
# 17| 2: [AssignExpr] ... = ...
# 17| 0: [PropertyCall] access to property Imaginary
# 17| 1: [DoubleLiteral] 0
# 17| 3: [Getter] get_Imaginary
# 17| 4: [Setter] set_Imaginary
#-----| 2: (Parameters)
# 17| 0: [Parameter] value
# 19| 6: [InstanceConstructor] Complex
# 19| 4: [BlockStmt] {...}
# 21| 7: [Method] Zero
# 21| -1: [TypeMention] Complex
# 21| 4: [ObjectCreation] object creation of type Complex
# 21| 0: [TypeMention] Complex
# 23| 8: [IncrementOperator] ++
# 23| -1: [TypeMention] Complex
#-----| 2: (Parameters)
# 23| 0: [Parameter] other
# 23| -1: [TypeMention] Complex
# 24| 4: [ObjectCreation] object creation of type Complex
# 24| -2: [TypeMention] Complex
# 24| -1: [ObjectInitializer] { ..., ... }
# 24| 0: [MemberInitializer] ... = ...
# 24| 0: [PropertyCall] access to property Real
# 24| 1: [AddExpr] ... + ...
# 24| 0: [PropertyCall] access to property Real
# 24| -1: [ParameterAccess] access to parameter other
# 24| 1: [DoubleLiteral] 1
# 24| 1: [MemberInitializer] ... = ...
# 24| 0: [PropertyCall] access to property Imaginary
# 24| 1: [PropertyCall] access to property Imaginary
# 24| -1: [ParameterAccess] access to parameter other
# 26| 9: [DecrementOperator] --
# 26| -1: [TypeMention] Complex
#-----| 2: (Parameters)
# 26| 0: [Parameter] other
# 26| -1: [TypeMention] Complex
# 27| 4: [ObjectCreation] object creation of type Complex
# 27| -2: [TypeMention] Complex
# 27| -1: [ObjectInitializer] { ..., ... }
# 27| 0: [MemberInitializer] ... = ...
# 27| 0: [PropertyCall] access to property Real
# 27| 1: [SubExpr] ... - ...
# 27| 0: [PropertyCall] access to property Real
# 27| -1: [ParameterAccess] access to parameter other
# 27| 1: [DoubleLiteral] 1
# 27| 1: [MemberInitializer] ... = ...
# 27| 0: [PropertyCall] access to property Imaginary
# 27| 1: [PropertyCall] access to property Imaginary
# 27| -1: [ParameterAccess] access to parameter other
# 29| 10: [Method] Add
# 29| -1: [TypeMention] Complex
#-----| 2: (Parameters)
# 29| 0: [Parameter] left
# 29| -1: [TypeMention] Complex
# 29| 1: [Parameter] right
# 29| -1: [TypeMention] Complex
# 30| 4: [ObjectCreation] object creation of type Complex
# 30| -2: [TypeMention] Complex
# 30| -1: [ObjectInitializer] { ..., ... }
# 30| 0: [MemberInitializer] ... = ...
# 30| 0: [PropertyCall] access to property Real
# 30| 1: [AddExpr] ... + ...
# 30| 0: [PropertyCall] access to property Real
# 30| -1: [ParameterAccess] access to parameter left
# 30| 1: [PropertyCall] access to property Real
# 30| -1: [ParameterAccess] access to parameter right
# 30| 1: [MemberInitializer] ... = ...
# 30| 0: [PropertyCall] access to property Imaginary
# 30| 1: [AddExpr] ... + ...
# 30| 0: [PropertyCall] access to property Imaginary
# 30| -1: [ParameterAccess] access to parameter left
# 30| 1: [PropertyCall] access to property Imaginary
# 30| -1: [ParameterAccess] access to parameter right
# 32| 11: [Method] Subtract
# 32| -1: [TypeMention] Complex
#-----| 2: (Parameters)
# 32| 0: [Parameter] left
# 32| -1: [TypeMention] Complex
# 32| 1: [Parameter] right
# 32| -1: [TypeMention] Complex
# 33| 4: [ObjectCreation] object creation of type Complex
# 33| -2: [TypeMention] Complex
# 33| -1: [ObjectInitializer] { ..., ... }
# 33| 0: [MemberInitializer] ... = ...
# 33| 0: [PropertyCall] access to property Real
# 33| 1: [SubExpr] ... - ...
# 33| 0: [PropertyCall] access to property Real
# 33| -1: [ParameterAccess] access to parameter left
# 33| 1: [PropertyCall] access to property Real
# 33| -1: [ParameterAccess] access to parameter right
# 33| 1: [MemberInitializer] ... = ...
# 33| 0: [PropertyCall] access to property Imaginary
# 33| 1: [SubExpr] ... - ...
# 33| 0: [PropertyCall] access to property Imaginary
# 33| -1: [ParameterAccess] access to parameter left
# 33| 1: [PropertyCall] access to property Imaginary
# 33| -1: [ParameterAccess] access to parameter right
Strings.cs:
# 3| [Class] MyTestClass
# 5| 5: [Method] M1
# 5| -1: [TypeMention] string
#-----| 2: (Parameters)
# 5| 0: [Parameter] x
# 5| -1: [TypeMention] int
# 6| 4: [BlockStmt] {...}
# 8| 0: [ReturnStmt] return ...;
# 8| 0: [InterpolatedStringExpr] $"..."
# 8| 0: [StringLiteralUtf16] "This is my int "
# 8| 1: [SwitchExpr] ... switch { ... }
# 8| -1: [ParameterAccess] access to parameter x
# 10| 0: [SwitchCaseExpr] ... => ...
# 10| 0: [ConstantPatternExpr,IntLiteral] 42
# 10| 2: [StringLiteralUtf16] "forty two"
# 11| 1: [SwitchCaseExpr] ... => ...
# 11| 0: [DiscardPatternExpr] _
# 11| 2: [StringLiteralUtf16] "something else"
# 12| 2: [StringLiteralUtf16] "."
# 15| 6: [Method] M2
# 15| -1: [TypeMention] Void
# 16| 4: [BlockStmt] {...}
# 18| 0: [LocalVariableDeclStmt] ... ...;
# 18| 0: [LocalVariableDeclAndInitExpr] String message1 = ...
# 18| -1: [TypeMention] string
# 18| 0: [LocalVariableAccess] access to local variable message1
# 18| 1: [StringLiteralUtf16] "This is my very long
# 18| text message that spans
# 18| accross multiple lines
# 18| and is very useful."
# 26| 1: [LocalVariableDeclStmt] ... ...;
# 26| 0: [LocalVariableDeclAndInitExpr] String message2 = ...
# 26| -1: [TypeMention] string
# 26| 0: [LocalVariableAccess] access to local variable message2
# 26| 1: [InterpolatedStringExpr] $"..."
# 27| 0: [StringLiteralUtf16] "The nested message
# 27| is \""
# 28| 1: [LocalVariableAccess] access to local variable message1
# 28| 2: [StringLiteralUtf16] "\" and everything
# 28| spans multiple lines."
# 33| 2: [LocalVariableDeclStmt] ... ...;
# 33| 0: [LocalVariableDeclAndInitExpr] String message3 = ...
# 33| -1: [TypeMention] string
# 33| 0: [LocalVariableAccess] access to local variable message3
# 33| 1: [InterpolatedStringExpr] $"..."
# 34| 0: [StringLiteralUtf16] "Show no curly braces: "
# 34| 1: [LocalVariableAccess] access to local variable message1
# 34| 2: [StringLiteralUtf16] "
# 34| Show matching set of curly braces: {"
# 35| 3: [LocalVariableAccess] access to local variable message2
# 35| 4: [StringLiteralUtf16] "}"
# 40| 7: [Method] M3
# 40| -1: [TypeMention] Void
# 41| 4: [BlockStmt] {...}
# 43| 0: [LocalVariableDeclStmt] ... ...;
# 43| 0: [LocalVariableDeclAndInitExpr] ReadOnlySpan<Byte> x = ...
# 43| -1: [TypeMention] ReadOnlySpan<byte>
# 43| 0: [LocalVariableAccess] access to local variable x
# 43| 1: [StringLiteralUtf8] "AUTH8: "
# 46| 1: [LocalVariableDeclStmt] ... ...;
# 46| 0: [LocalVariableDeclAndInitExpr] String y = ...
# 46| -1: [TypeMention] string
# 46| 0: [LocalVariableAccess] access to local variable y
# 46| 1: [StringLiteralUtf16] "AUTH16: "
# 49| 2: [LocalVariableDeclStmt] ... ...;
# 49| 0: [LocalVariableDeclAndInitExpr] ReadOnlySpan<Byte> z = ...
# 49| -1: [TypeMention] ReadOnlySpan<byte>
# 49| 0: [LocalVariableAccess] access to local variable z
# 49| 1: [StringLiteralUtf8] "AUTH8:
# 49| <username> "
# 53| 3: [LocalVariableDeclStmt] ... ...;
# 53| 0: [LocalVariableDeclAndInitExpr] ReadOnlySpan<Byte> w = ...
# 53| -1: [TypeMention] ReadOnlySpan<byte>
# 53| 0: [LocalVariableAccess] access to local variable w
# 53| 1: [StringLiteralUtf8] "The nested message
# 53| is UTF-8 encoded and
# 53| spans multiple lines."
cil/class1.cs:
# 4| [Class] Class1
# 6| 5: [Method] Main
# 6| -1: [TypeMention] Void
#-----| 2: (Parameters)
# 6| 0: [Parameter] args
# 6| -1: [TypeMention] String[]
# 6| 1: [TypeMention] string
# 6| 4: [BlockStmt] {...}

View File

@@ -0,0 +1 @@
shared/PrintAst.ql

View File

@@ -0,0 +1,59 @@
using System;
public class MyTestClass
{
public string M1(int x)
{
// Use an expression that spans across multiple lines in a string interpolation.
return $"This is my int {x switch
{
42 => "forty two",
_ => "something else"
}}.";
}
public void M2()
{
// Raw string literal.
var message1 = """
This is my very long
text message that spans
accross multiple lines
and is very useful.
""";
// String interpolation using a raw string literal.
var message2 = $"""
The nested message
is "{message1}" and everything
spans multiple lines.
""";
// String interpolation using a raw string literal that requires double curly braces.
var message3 = $$"""
Show no curly braces: {{message1}}
Show matching set of curly braces: {{{message2}}}
""";
}
public void M3()
{
// UTF-8 encoded.
var x = "AUTH8: "u8;
// UTF-16 encoded.
var y = "AUTH16: ";
// UTF-8 encoded vertabim.
var z = @"AUTH8:
<username> "u8;
// UTF-8 encoded raw literal.
var w = """
The nested message
is UTF-8 encoded and
spans multiple lines.
"""u8;
}
}

View File

@@ -0,0 +1,23 @@
interpolatedstrings
| Strings.cs:8:16:12:12 | $"..." | Strings.cs:8:18:8:32 | "This is my int " |
| Strings.cs:8:16:12:12 | $"..." | Strings.cs:8:34:12:9 | ... switch { ... } |
| Strings.cs:8:16:12:12 | $"..." | Strings.cs:12:11:12:11 | "." |
| Strings.cs:26:24:30:11 | $"..." | Strings.cs:27:1:28:14 | "The nested message\n is \\"" |
| Strings.cs:26:24:30:11 | $"..." | Strings.cs:28:16:28:23 | access to local variable message1 |
| Strings.cs:26:24:30:11 | $"..." | Strings.cs:28:25:29:29 | "\\" and everything\nspans multiple lines." |
| Strings.cs:33:24:36:11 | $"..." | Strings.cs:34:1:34:30 | "Show no curly braces: " |
| Strings.cs:33:24:36:11 | $"..." | Strings.cs:34:33:34:40 | access to local variable message1 |
| Strings.cs:33:24:36:11 | $"..." | Strings.cs:34:43:35:44 | "\nShow matching set of curly braces: {" |
| Strings.cs:33:24:36:11 | $"..." | Strings.cs:35:47:35:54 | access to local variable message2 |
| Strings.cs:33:24:36:11 | $"..." | Strings.cs:35:57:35:57 | "}" |
stringliterals
| Strings.cs:18:24:23:11 | "This is my very long\n text message that spans\n accross multiple lines\nand is very useful." | StringLiteralUtf16 | String |
| Strings.cs:27:1:28:14 | "The nested message\n is \\"" | StringLiteralUtf16 | String |
| Strings.cs:28:25:29:29 | "\\" and everything\nspans multiple lines." | StringLiteralUtf16 | String |
| Strings.cs:34:1:34:30 | "Show no curly braces: " | StringLiteralUtf16 | String |
| Strings.cs:34:43:35:44 | "\nShow matching set of curly braces: {" | StringLiteralUtf16 | String |
| Strings.cs:35:57:35:57 | "}" | StringLiteralUtf16 | String |
| Strings.cs:43:17:43:27 | "AUTH8: " | StringLiteralUtf8 | ReadOnlySpan<Byte> |
| Strings.cs:46:17:46:26 | "AUTH16: " | StringLiteralUtf16 | String |
| Strings.cs:49:17:50:22 | "AUTH8: \n <username> " | StringLiteralUtf8 | ReadOnlySpan<Byte> |
| Strings.cs:53:17:57:13 | "The nested message\n is UTF-8 encoded and\nspans multiple lines." | StringLiteralUtf8 | ReadOnlySpan<Byte> |

View File

@@ -0,0 +1,13 @@
import csharp
query predicate interpolatedstrings(InterpolatedStringExpr se, Expr e) {
se.getFile().getStem() = "Strings" and
(e = se.getAText() or e = se.getAnInsert())
}
query predicate stringliterals(StringLiteral s, string qlclass, string type) {
s.getFile().getStem() = "Strings" and
s.getEnclosingCallable().getName() = ["M2", "M3"] and
qlclass = s.getAPrimaryQlClass() and
type = s.getType().toString()
}

View File

@@ -34,12 +34,12 @@ csharp6.cs:
# 25| 0: [InterpolatedStringExpr] $"..."
# 25| 0: [NameOfExpr] nameof(...)
# 25| 0: [LocalVariableAccess] access to local variable foo
# 25| 1: [StringLiteral] " is "
# 25| 1: [StringLiteralUtf16] " is "
# 25| 2: [LocalVariableAccess] access to local variable foo
# 25| 3: [StringLiteral] ", and "
# 25| 3: [StringLiteralUtf16] ", and "
# 25| 4: [NameOfExpr] nameof(...)
# 25| 0: [LocalVariableAccess] access to local variable bar
# 25| 5: [StringLiteral] " has length "
# 25| 5: [StringLiteralUtf16] " has length "
# 25| 6: [NullCoalescingExpr] ... ?? ...
# 25| 0: [PropertyCall] access to property Length
# 25| -1: [LocalVariableAccess] access to local variable bar
@@ -49,12 +49,12 @@ csharp6.cs:
# 27| 0: [InterpolatedStringExpr] $"..."
# 27| 0: [NameOfExpr] nameof(...)
# 27| 0: [LocalVariableAccess] access to local variable foo
# 27| 1: [StringLiteral] " is "
# 27| 1: [StringLiteralUtf16] " is "
# 27| 2: [LocalVariableAccess] access to local variable foo
# 27| 3: [StringLiteral] ", and "
# 27| 3: [StringLiteralUtf16] ", and "
# 27| 4: [NameOfExpr] nameof(...)
# 27| 0: [LocalVariableAccess] access to local variable bar
# 27| 5: [StringLiteral] " has length "
# 27| 5: [StringLiteralUtf16] " has length "
# 27| 6: [NullCoalescingExpr] ... ?? ...
# 27| 0: [PropertyCall] access to property Length
# 27| -1: [LocalVariableAccess] access to local variable bar
@@ -184,15 +184,15 @@ csharp6.cs:
# 68| 0: [MemberInitializer] ... = ...
# 68| 0: [IndexerCall] access to indexer
# 68| 0: [IntLiteral] 0
# 68| 1: [StringLiteral] "Zero"
# 68| 1: [StringLiteralUtf16] "Zero"
# 68| 1: [MemberInitializer] ... = ...
# 68| 0: [IndexerCall] access to indexer
# 68| 0: [IntLiteral] 1
# 68| 1: [StringLiteral] "One"
# 68| 1: [StringLiteralUtf16] "One"
# 68| 2: [MemberInitializer] ... = ...
# 68| 0: [IndexerCall] access to indexer
# 68| 0: [IntLiteral] 2
# 68| 1: [StringLiteral] "Two"
# 68| 1: [StringLiteralUtf16] "Two"
# 71| 1: [LocalVariableDeclStmt] ... ...;
# 71| 0: [LocalVariableDeclAndInitExpr] Compound compound = ...
# 71| -1: [TypeMention] Compound
@@ -206,41 +206,41 @@ csharp6.cs:
# 73| 0: [MemberInitializer] ... = ...
# 73| 0: [IndexerCall] access to indexer
# 73| 0: [IntLiteral] 0
# 73| 1: [StringLiteral] "Zero"
# 73| 1: [StringLiteralUtf16] "Zero"
# 73| 1: [MemberInitializer] ... = ...
# 73| 0: [IndexerCall] access to indexer
# 73| 0: [IntLiteral] 1
# 73| 1: [StringLiteral] "One"
# 73| 1: [StringLiteralUtf16] "One"
# 73| 2: [MemberInitializer] ... = ...
# 73| 0: [IndexerCall] access to indexer
# 73| 0: [IntLiteral] 2
# 73| 1: [StringLiteral] "Two"
# 73| 1: [StringLiteralUtf16] "Two"
# 74| 1: [MemberInitializer] ... = ...
# 74| 0: [PropertyCall] access to property DictionaryProperty
# 74| 1: [ObjectInitializer] { ..., ... }
# 74| 0: [MemberInitializer] ... = ...
# 74| 0: [IndexerCall] access to indexer
# 74| 0: [IntLiteral] 3
# 74| 1: [StringLiteral] "Three"
# 74| 1: [StringLiteralUtf16] "Three"
# 74| 1: [MemberInitializer] ... = ...
# 74| 0: [IndexerCall] access to indexer
# 74| 0: [IntLiteral] 2
# 74| 1: [StringLiteral] "Two"
# 74| 1: [StringLiteralUtf16] "Two"
# 74| 2: [MemberInitializer] ... = ...
# 74| 0: [IndexerCall] access to indexer
# 74| 0: [IntLiteral] 1
# 74| 1: [StringLiteral] "One"
# 74| 1: [StringLiteralUtf16] "One"
# 75| 2: [MemberInitializer] ... = ...
# 75| 0: [FieldAccess] access to field ArrayField
# 75| 1: [ObjectInitializer] { ..., ... }
# 75| 0: [MemberInitializer] ... = ...
# 75| 0: [ArrayAccess] access to array element
# 75| 0: [IntLiteral] 0
# 75| 1: [StringLiteral] "Zero"
# 75| 1: [StringLiteralUtf16] "Zero"
# 75| 1: [MemberInitializer] ... = ...
# 75| 0: [ArrayAccess] access to array element
# 75| 0: [IntLiteral] 1
# 75| 1: [StringLiteral] "One"
# 75| 1: [StringLiteralUtf16] "One"
# 76| 3: [MemberInitializer] ... = ...
# 76| 0: [FieldAccess] access to field ArrayField2
# 76| 1: [ObjectInitializer] { ..., ... }
@@ -248,23 +248,23 @@ csharp6.cs:
# 76| 0: [ArrayAccess] access to array element
# 76| 0: [IntLiteral] 0
# 76| 1: [IntLiteral] 1
# 76| 1: [StringLiteral] "i"
# 76| 1: [StringLiteralUtf16] "i"
# 76| 1: [MemberInitializer] ... = ...
# 76| 0: [ArrayAccess] access to array element
# 76| 0: [IntLiteral] 1
# 76| 1: [IntLiteral] 0
# 76| 1: [StringLiteral] "1"
# 76| 1: [StringLiteralUtf16] "1"
# 77| 4: [MemberInitializer] ... = ...
# 77| 0: [PropertyCall] access to property ArrayProperty
# 77| 1: [ObjectInitializer] { ..., ... }
# 77| 0: [MemberInitializer] ... = ...
# 77| 0: [ArrayAccess] access to array element
# 77| 0: [IntLiteral] 1
# 77| 1: [StringLiteral] "One"
# 77| 1: [StringLiteralUtf16] "One"
# 77| 1: [MemberInitializer] ... = ...
# 77| 0: [ArrayAccess] access to array element
# 77| 0: [IntLiteral] 2
# 77| 1: [StringLiteral] "Two"
# 77| 1: [StringLiteralUtf16] "Two"
# 78| 5: [MemberInitializer] ... = ...
# 78| 0: [PropertyCall] access to property ArrayProperty2
# 78| 1: [ObjectInitializer] { ..., ... }
@@ -272,9 +272,9 @@ csharp6.cs:
# 78| 0: [ArrayAccess] access to array element
# 78| 0: [IntLiteral] 0
# 78| 1: [IntLiteral] 1
# 78| 1: [StringLiteral] "i"
# 78| 1: [StringLiteralUtf16] "i"
# 78| 1: [MemberInitializer] ... = ...
# 78| 0: [ArrayAccess] access to array element
# 78| 0: [IntLiteral] 1
# 78| 1: [IntLiteral] 0
# 78| 1: [StringLiteral] "1"
# 78| 1: [StringLiteralUtf16] "1"

View File

@@ -62,12 +62,12 @@ csharp71.cs:
# 24| 1: [IsExpr] ... is ...
# 24| 0: [ObjectCreation] object creation of type Object
# 24| 0: [TypeMention] object
# 24| 1: [ConstantPatternExpr,StringLiteral] "abc"
# 24| 1: [ConstantPatternExpr,StringLiteralUtf16] "abc"
# 25| 2: [ExprStmt] ...;
# 25| 0: [AssignExpr] ... = ...
# 25| 0: [LocalVariableAccess] access to local variable b
# 25| 1: [IsExpr] ... is ...
# 25| 0: [StringLiteral] ""
# 25| 0: [StringLiteralUtf16] ""
# 25| 1: [ConstantPatternExpr,NullLiteral] null
# 26| 3: [ExprStmt] ...;
# 26| 0: [AssignExpr] ... = ...

View File

@@ -109,5 +109,5 @@ csharp73.cs:
# 51| -1: [TypeAccess] access to type Console
# 51| 0: [TypeMention] Console
# 51| 0: [InterpolatedStringExpr] $"..."
# 51| 0: [StringLiteral] "x is "
# 51| 0: [StringLiteralUtf16] "x is "
# 51| 1: [LocalVariableAccess] access to local variable x

View File

@@ -65,7 +65,7 @@ CSharp7.cs:
# 31| 2: [ThrowExpr] throw ...
# 31| 0: [ObjectCreation] object creation of type ArgumentException
# 31| -1: [TypeMention] ArgumentException
# 31| 0: [StringLiteral] "i"
# 31| 0: [StringLiteralUtf16] "i"
# 35| [Class] OutVariables
# 37| 5: [Method] F
# 37| -1: [TypeMention] Void
@@ -76,7 +76,7 @@ CSharp7.cs:
# 39| 0: [ExprStmt] ...;
# 39| 0: [AssignExpr] ... = ...
# 39| 0: [ParameterAccess] access to parameter x
# 39| 1: [StringLiteral] "tainted"
# 39| 1: [StringLiteralUtf16] "tainted"
# 42| 6: [Method] G
# 42| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -116,7 +116,7 @@ CSharp7.cs:
# 54| 1: [LocalVariableAccess] access to local variable t2
# 55| 6: [ExprStmt] ...;
# 55| 0: [MethodCall] call to method G
# 55| 0: [StringLiteral] "tainted"
# 55| 0: [StringLiteralUtf16] "tainted"
# 55| 1: [LocalVariableAccess,LocalVariableDeclExpr] String t4
# 56| 7: [LocalVariableDeclStmt] ... ...;
# 56| 0: [LocalVariableDeclAndInitExpr] String t5 = ...
@@ -209,7 +209,7 @@ CSharp7.cs:
# 77| 0: [LocalVariableDeclExpr] String i
# 77| 1: [LocalVariableDeclExpr] Int32 j
# 77| 1: [TupleExpr] (..., ...)
# 77| 0: [StringLiteral] ""
# 77| 0: [StringLiteralUtf16] ""
# 77| 1: [LocalVariableAccess] access to local variable x
# 80| 7: [Method] I
# 80| -1: [TypeMention] string
@@ -230,8 +230,8 @@ CSharp7.cs:
# 87| -1: [TypeMention] (string, string)
# 87| 0: [LocalVariableAccess] access to local variable t1
# 87| 1: [TupleExpr] (..., ...)
# 87| 0: [StringLiteral] "tainted"
# 87| 1: [StringLiteral] "X2"
# 87| 0: [StringLiteralUtf16] "tainted"
# 87| 1: [StringLiteralUtf16] "X2"
# 88| 1: [ExprStmt] ...;
# 88| 0: [AssignExpr] ... = ...
# 88| 0: [TupleExpr] (..., ...)
@@ -259,7 +259,7 @@ CSharp7.cs:
# 95| 0: [LocalVariableAccess] access to local variable m1
# 95| 1: [TupleExpr] (..., ...)
# 95| 0: [IntLiteral] 1
# 95| 1: [StringLiteral] "TupleExprNode1"
# 95| 1: [StringLiteralUtf16] "TupleExprNode1"
# 96| 1: [LocalVariableDeclStmt] ... ...;
# 96| 0: [LocalVariableDeclAndInitExpr] (Int32,(String,Int32)) m2 = ...
# 96| -1: [TypeMention] (int, (string, int))
@@ -267,7 +267,7 @@ CSharp7.cs:
# 96| 1: [TupleExpr] (..., ...)
# 96| 0: [IntLiteral] 1
# 96| 1: [TupleExpr] (..., ...)
# 96| 0: [StringLiteral] "TupleExprNode2"
# 96| 0: [StringLiteralUtf16] "TupleExprNode2"
# 96| 1: [IntLiteral] 2
# 99| 10: [Method] TupleMemberAccess
# 99| -1: [TypeMention] Void
@@ -278,7 +278,7 @@ CSharp7.cs:
# 101| 0: [LocalVariableAccess] access to local variable m1
# 101| 1: [FieldAccess] access to field Item1
# 101| -1: [TupleExpr] (..., ...)
# 101| 0: [StringLiteral] "TupleMemberAccess1"
# 101| 0: [StringLiteralUtf16] "TupleMemberAccess1"
# 101| 1: [IntLiteral] 0
# 102| 1: [LocalVariableDeclStmt] ... ...;
# 102| 0: [LocalVariableDeclAndInitExpr] (String,Int32) m2 = ...
@@ -288,7 +288,7 @@ CSharp7.cs:
# 102| -1: [TupleExpr] (..., ...)
# 102| 0: [IntLiteral] 0
# 102| 1: [TupleExpr] (..., ...)
# 102| 0: [StringLiteral] "TupleMemberAccess2"
# 102| 0: [StringLiteralUtf16] "TupleMemberAccess2"
# 102| 1: [IntLiteral] 1
# 105| 11: [Method] DefUse
# 105| -1: [TypeMention] Void
@@ -299,7 +299,7 @@ CSharp7.cs:
# 107| 0: [LocalVariableDeclExpr] String m1
# 107| 1: [LocalVariableDeclExpr] (Int32,Int32) m2
# 107| 1: [TupleExpr] (..., ...)
# 107| 0: [StringLiteral] "DefUse1"
# 107| 0: [StringLiteralUtf16] "DefUse1"
# 107| 1: [TupleExpr] (..., ...)
# 107| 0: [IntLiteral] 0
# 107| 1: [IntLiteral] 1
@@ -338,7 +338,7 @@ CSharp7.cs:
# 112| 0: [LocalVariableAccess] access to local variable m1
# 112| 1: [LocalVariableAccess] access to local variable m2
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [StringLiteral] "DefUse2"
# 112| 0: [StringLiteralUtf16] "DefUse2"
# 112| 1: [TupleExpr] (..., ...)
# 112| 0: [IntLiteral] 0
# 112| 1: [IntLiteral] 1
@@ -367,7 +367,7 @@ CSharp7.cs:
# 121| 0: [LocalVariableAccess] access to local variable m13
# 121| 1: [AssignExpr] ... = ...
# 121| 0: [LocalVariableAccess] access to local variable m12
# 121| 1: [StringLiteral] "DefUse3"
# 121| 1: [StringLiteralUtf16] "DefUse3"
# 125| [Class] LocalFunctions
# 127| 5: [Method] Main
# 127| -1: [TypeMention] int
@@ -523,7 +523,7 @@ CSharp7.cs:
# 170| 4: [ExprStmt] ...;
# 170| 0: [LocalFunctionCall] call to local function h
# 170| -1: [LocalFunctionAccess] access to local function h
# 170| 0: [StringLiteral] ""
# 170| 0: [StringLiteralUtf16] ""
# 170| 1: [BoolLiteral] true
# 173| 7: [Method] GlobalFlow
# 173| -1: [TypeMention] Void
@@ -532,7 +532,7 @@ CSharp7.cs:
# 175| 0: [LocalVariableDeclAndInitExpr] String src = ...
# 175| -1: [TypeMention] string
# 175| 0: [LocalVariableAccess] access to local variable src
# 175| 1: [StringLiteral] "tainted"
# 175| 1: [StringLiteralUtf16] "tainted"
# 176| 1: [LocalFunctionStmt] f(...)
# 176| 0: [LocalFunction] f
#-----| 2: (Parameters)
@@ -542,7 +542,7 @@ CSharp7.cs:
# 176| 0: [LocalFunctionCall] call to local function g
# 176| -1: [LocalFunctionAccess] access to local function g
# 176| 0: [ParameterAccess] access to parameter s
# 176| 1: [StringLiteral] ""
# 176| 1: [StringLiteralUtf16] ""
# 177| 2: [LocalFunctionStmt] g(...)
# 177| 0: [LocalFunction] g
#-----| 2: (Parameters)
@@ -734,7 +734,7 @@ CSharp7.cs:
# 235| -1: [TypeAccess] access to type Console
# 235| 0: [TypeMention] Console
# 235| 0: [InterpolatedStringExpr] $"..."
# 235| 0: [StringLiteral] "int "
# 235| 0: [StringLiteralUtf16] "int "
# 235| 1: [LocalVariableAccess] access to local variable i1
# 237| 2: [IfStmt] if (...) ...
# 237| 0: [IsExpr] ... is ...
@@ -747,7 +747,7 @@ CSharp7.cs:
# 239| -1: [TypeAccess] access to type Console
# 239| 0: [TypeMention] Console
# 239| 0: [InterpolatedStringExpr] $"..."
# 239| 0: [StringLiteral] "string "
# 239| 0: [StringLiteralUtf16] "string "
# 239| 1: [LocalVariableAccess] access to local variable s1
# 241| 2: [IfStmt] if (...) ...
# 241| 0: [IsExpr] ... is ...
@@ -763,16 +763,16 @@ CSharp7.cs:
# 248| 2: [SwitchStmt] switch (...) {...}
# 248| 0: [LocalVariableAccess] access to local variable o
# 250| 0: [ConstCase] case ...:
# 250| 0: [ConstantPatternExpr,StringLiteral] "xyz"
# 250| 0: [ConstantPatternExpr,StringLiteralUtf16] "xyz"
# 251| 1: [BreakStmt] break;
# 252| 2: [ConstCase] case ...:
# 252| 0: [ConstantPatternExpr,StringLiteral] ""
# 252| 0: [ConstantPatternExpr,StringLiteralUtf16] ""
# 252| 1: [LTExpr] ... < ...
# 252| 0: [IntLiteral] 1
# 252| 1: [IntLiteral] 2
# 253| 3: [BreakStmt] break;
# 254| 4: [ConstCase] case ...:
# 254| 0: [ConstantPatternExpr,StringLiteral] "x"
# 254| 0: [ConstantPatternExpr,StringLiteralUtf16] "x"
# 254| 1: [IsExpr] ... is ...
# 254| 0: [LocalVariableAccess] access to local variable o
# 254| 1: [VariablePatternExpr] String s4
@@ -782,7 +782,7 @@ CSharp7.cs:
# 255| -1: [TypeAccess] access to type Console
# 255| 0: [TypeMention] Console
# 255| 0: [InterpolatedStringExpr] $"..."
# 255| 0: [StringLiteral] "x "
# 255| 0: [StringLiteralUtf16] "x "
# 255| 1: [LocalVariableAccess] access to local variable s4
# 256| 6: [BreakStmt] break;
# 257| 7: [CaseStmt] case ...:
@@ -796,7 +796,7 @@ CSharp7.cs:
# 258| -1: [TypeAccess] access to type Console
# 258| 0: [TypeMention] Console
# 258| 0: [InterpolatedStringExpr] $"..."
# 258| 0: [StringLiteral] "positive "
# 258| 0: [StringLiteralUtf16] "positive "
# 258| 1: [LocalVariableAccess] access to local variable i2
# 259| 9: [BreakStmt] break;
# 260| 10: [CaseStmt] case ...:
@@ -807,7 +807,7 @@ CSharp7.cs:
# 261| -1: [TypeAccess] access to type Console
# 261| 0: [TypeMention] Console
# 261| 0: [InterpolatedStringExpr] $"..."
# 261| 0: [StringLiteral] "int "
# 261| 0: [StringLiteralUtf16] "int "
# 261| 1: [LocalVariableAccess] access to local variable i3
# 262| 12: [BreakStmt] break;
# 263| 13: [CaseStmt] case ...:
@@ -818,7 +818,7 @@ CSharp7.cs:
# 264| -1: [TypeAccess] access to type Console
# 264| 0: [TypeMention] Console
# 264| 0: [InterpolatedStringExpr] $"..."
# 264| 0: [StringLiteral] "string "
# 264| 0: [StringLiteralUtf16] "string "
# 264| 1: [LocalVariableAccess] access to local variable s2
# 265| 15: [BreakStmt] break;
# 266| 16: [CaseStmt] case ...:
@@ -828,7 +828,7 @@ CSharp7.cs:
# 267| 0: [MethodCall] call to method WriteLine
# 267| -1: [TypeAccess] access to type Console
# 267| 0: [TypeMention] Console
# 267| 0: [StringLiteral] "Double"
# 267| 0: [StringLiteralUtf16] "Double"
# 268| 18: [BreakStmt] break;
# 269| 19: [CaseStmt] case ...:
# 269| 0: [VariablePatternExpr] Object v2
@@ -838,7 +838,7 @@ CSharp7.cs:
# 272| 0: [MethodCall] call to method WriteLine
# 272| -1: [TypeAccess] access to type Console
# 272| 0: [TypeMention] Console
# 272| 0: [StringLiteral] "Something else"
# 272| 0: [StringLiteralUtf16] "Something else"
# 273| 23: [BreakStmt] break;
# 278| [Class] ForeachStatements
# 280| 5: [Method] Test

View File

@@ -5,14 +5,14 @@ AlternateInterpolatedStrings.cs:
# 5| 1: [AssignExpr] ... = ...
# 5| 0: [FieldAccess] access to field s1
# 5| 1: [InterpolatedStringExpr] $"..."
# 5| 0: [StringLiteral] "C:"
# 5| 0: [StringLiteralUtf16] "C:"
# 5| 1: [IntLiteral] 12
# 6| 6: [Field] s2
# 6| -1: [TypeMention] string
# 6| 1: [AssignExpr] ... = ...
# 6| 0: [FieldAccess] access to field s2
# 6| 1: [InterpolatedStringExpr] $"..."
# 6| 0: [StringLiteral] "C:"
# 6| 0: [StringLiteralUtf16] "C:"
# 6| 1: [IntLiteral] 12
AsyncStreams.cs:
# 6| [Class] AsyncStreams
@@ -80,7 +80,7 @@ DefaultInterfaceMethods.cs:
# 7| 5: [Property] Greeting
# 7| -1: [TypeMention] string
# 9| 3: [Getter] get_Greeting
# 9| 4: [StringLiteral] "Hello"
# 9| 4: [StringLiteralUtf16] "Hello"
# 10| 4: [Setter] set_Greeting
#-----| 2: (Parameters)
# 10| 0: [Parameter] value
@@ -93,7 +93,7 @@ DefaultInterfaceMethods.cs:
# 13| 4: [AddExpr] ... + ...
# 13| 0: [AddExpr] ... + ...
# 13| 0: [PropertyCall] access to property Greeting
# 13| 1: [StringLiteral] " "
# 13| 1: [StringLiteralUtf16] " "
# 13| 1: [ParameterAccess] access to parameter name
# 15| 7: [Property] GreetingString
# 15| -1: [TypeMention] string
@@ -108,12 +108,12 @@ DefaultInterfaceMethods.cs:
# 22| 5: [Property] Name
# 22| -1: [TypeMention] string
# 22| 3: [Getter] get_Name
# 22| 4: [StringLiteral] "Petra"
# 22| 4: [StringLiteralUtf16] "Petra"
# 24| 6: [Property] Greeting
# 24| -1: [TypeMention] IPerson
# 24| -1: [TypeMention] string
# 24| 3: [Getter] get_Greeting
# 24| 4: [StringLiteral] "Howdy"
# 24| 4: [StringLiteralUtf16] "Howdy"
# 24| 4: [Setter] set_Greeting
#-----| 2: (Parameters)
# 24| 0: [Parameter] value
@@ -353,7 +353,7 @@ NullableRefTypes.cs:
# 84| 0: [LocalVariableDeclAndInitExpr] String x = ...
# 84| -1: [TypeMention] string
# 84| 0: [LocalVariableAccess] access to local variable x
# 84| 1: [StringLiteral] "source"
# 84| 1: [StringLiteralUtf16] "source"
# 85| 1: [LocalVariableDeclStmt] ... ...;
# 85| 0: [LocalVariableDeclAndInitExpr] String y = ...
# 85| -1: [TypeMention] string
@@ -381,7 +381,7 @@ NullableRefTypes.cs:
# 93| 0: [LocalVariableDeclAndInitExpr] String x = ...
# 93| -1: [TypeMention] string
# 93| 0: [LocalVariableAccess] access to local variable x
# 93| 1: [StringLiteral] "source"
# 93| 1: [StringLiteralUtf16] "source"
# 94| 1: [LocalVariableDeclStmt] ... ...;
# 94| 0: [LocalVariableDeclAndInitExpr] String y = ...
# 94| -1: [TypeMention] string
@@ -592,7 +592,7 @@ NullableRefTypes.cs:
# 187| 0: [ExprStmt] ...;
# 187| 0: [AssignExpr] ... = ...
# 187| 0: [LocalVariableAccess] access to local variable x
# 187| 1: [StringLiteral] "not null any more"
# 187| 1: [StringLiteralUtf16] "not null any more"
# 190| 3: [ExprStmt] ...;
# 190| 0: [MethodCall] call to method Check
# 190| 0: [LocalVariableAccess] access to local variable x
@@ -609,7 +609,7 @@ NullableRefTypes.cs:
# 203| 0: [ExprStmt] ...;
# 203| 0: [AssignExpr] ... = ...
# 203| 0: [LocalVariableAccess] access to local variable y
# 203| 1: [StringLiteral] "not null"
# 203| 1: [StringLiteralUtf16] "not null"
# 198| 0: [BlockStmt] {...}
# 199| 0: [ThrowStmt] throw ...;
# 199| 0: [ObjectCreation] object creation of type ArgumentException
@@ -721,7 +721,7 @@ UsingDeclarations.cs:
# 8| 0: [LocalVariableAccess] access to local variable file1
# 8| 1: [ObjectCreation] object creation of type FileStream
# 8| -1: [TypeMention] FileStream
# 8| 0: [StringLiteral] "..."
# 8| 0: [StringLiteralUtf16] "..."
# 8| 1: [MemberConstantAccess] access to constant Open
# 8| -1: [TypeAccess] access to type FileMode
# 8| 0: [TypeMention] FileMode
@@ -730,7 +730,7 @@ UsingDeclarations.cs:
# 8| 0: [LocalVariableAccess] access to local variable file2
# 8| 1: [ObjectCreation] object creation of type FileStream
# 8| -1: [TypeMention] FileStream
# 8| 0: [StringLiteral] "..."
# 8| 0: [StringLiteralUtf16] "..."
# 8| 1: [MemberConstantAccess] access to constant Open
# 8| -1: [TypeAccess] access to type FileMode
# 8| 0: [TypeMention] FileMode
@@ -740,7 +740,7 @@ UsingDeclarations.cs:
# 10| 0: [LocalVariableAccess] access to local variable file4
# 10| 1: [ObjectCreation] object creation of type FileStream
# 10| -1: [TypeMention] FileStream
# 10| 0: [StringLiteral] "..."
# 10| 0: [StringLiteralUtf16] "..."
# 10| 1: [MemberConstantAccess] access to constant Open
# 10| -1: [TypeAccess] access to type FileMode
# 10| 0: [TypeMention] FileMode
@@ -749,7 +749,7 @@ UsingDeclarations.cs:
# 10| 0: [LocalVariableAccess] access to local variable file3
# 10| 1: [ObjectCreation] object creation of type FileStream
# 10| -1: [TypeMention] FileStream
# 10| 0: [StringLiteral] "..."
# 10| 0: [StringLiteralUtf16] "..."
# 10| 1: [MemberConstantAccess] access to constant Open
# 10| -1: [TypeAccess] access to type FileMode
# 10| 0: [TypeMention] FileMode
@@ -757,7 +757,7 @@ UsingDeclarations.cs:
# 14| 2: [UsingBlockStmt] using (...) {...}
# 14| 0: [ObjectCreation] object creation of type FileStream
# 14| -1: [TypeMention] FileStream
# 14| 0: [StringLiteral] "..."
# 14| 0: [StringLiteralUtf16] "..."
# 14| 1: [MemberConstantAccess] access to constant Open
# 14| -1: [TypeAccess] access to type FileMode
# 14| 0: [TypeMention] FileMode
@@ -864,7 +864,7 @@ patterns.cs:
# 39| 0: [MethodCall] call to method WriteLine
# 39| -1: [TypeAccess] access to type Console
# 39| 0: [TypeMention] Console
# 39| 0: [StringLiteral] "Hit the breakpoint"
# 39| 0: [StringLiteralUtf16] "Hit the breakpoint"
# 40| 2: [BreakStmt] break;
# 41| 3: [CaseStmt] case ...:
# 41| 0: [VariablePatternExpr] MyStruct ms2
@@ -877,7 +877,7 @@ patterns.cs:
# 42| 0: [MethodCall] call to method WriteLine
# 42| -1: [TypeAccess] access to type Console
# 42| 0: [TypeMention] Console
# 42| 0: [StringLiteral] "Missed the breakpoint"
# 42| 0: [StringLiteralUtf16] "Missed the breakpoint"
# 43| 5: [BreakStmt] break;
# 46| 2: [SwitchStmt] switch (...) {...}
# 46| 0: [LocalVariableAccess] access to local variable s
@@ -908,7 +908,7 @@ patterns.cs:
# 52| 0: [MethodCall] call to method WriteLine
# 52| -1: [TypeAccess] access to type Console
# 52| 0: [TypeMention] Console
# 52| 0: [StringLiteral] "Hit the breakpoint"
# 52| 0: [StringLiteralUtf16] "Hit the breakpoint"
# 53| 5: [BreakStmt] break;
# 54| 6: [CaseStmt] case ...:
# 54| 0: [RecursivePatternExpr] { ... }
@@ -970,7 +970,7 @@ patterns.cs:
# 71| 0: [MethodCall] call to method WriteLine
# 71| -1: [TypeAccess] access to type Console
# 71| 0: [TypeMention] Console
# 71| 0: [StringLiteral] "Hit the breakpoint"
# 71| 0: [StringLiteralUtf16] "Hit the breakpoint"
# 72| 5: [BreakStmt] break;
# 76| 4: [SwitchStmt] switch (...) {...}
# 76| 0: [ObjectCreation] object creation of type Object
@@ -1039,10 +1039,10 @@ patterns.cs:
# 101| 1: [GTExpr] ... > ...
# 101| 0: [LocalVariableAccess] access to local variable y
# 101| 1: [IntLiteral] 10
# 101| 2: [StringLiteral] "large"
# 101| 2: [StringLiteralUtf16] "large"
# 102| 1: [SwitchCaseExpr] ... => ...
# 102| 0: [DiscardPatternExpr] _
# 102| 2: [StringLiteral] "small"
# 102| 2: [StringLiteralUtf16] "small"
# 105| 1: [LocalVariableDeclStmt] ... ...;
# 105| 0: [LocalVariableDeclAndInitExpr] Int32 x0 = ...
# 105| -1: [TypeMention] int
@@ -1204,7 +1204,7 @@ patterns.cs:
# 147| 0: [MethodCall] call to method WriteLine
# 147| -1: [TypeAccess] access to type Console
# 147| 0: [TypeMention] Console
# 147| 0: [StringLiteral] "Invalid operation"
# 147| 0: [StringLiteralUtf16] "Invalid operation"
# 151| 9: [Struct] MyStruct
# 153| 5: [Field] X
# 153| -1: [TypeMention] int

View File

@@ -118,10 +118,10 @@ BinaryPattern.cs:
# 18| 0: [OrPatternExpr] ... or ...
# 18| 0: [ConstantPatternExpr,IntLiteral] 1
# 18| 1: [ConstantPatternExpr,IntLiteral] 2
# 18| 2: [StringLiteral] "1 or 2"
# 18| 2: [StringLiteralUtf16] "1 or 2"
# 19| 1: [SwitchCaseExpr] ... => ...
# 19| 0: [DiscardPatternExpr] _
# 19| 2: [StringLiteral] "other"
# 19| 2: [StringLiteralUtf16] "other"
CovariantReturn.cs:
# 1| [Class] A
# 3| 5: [Method] M1
@@ -967,7 +967,7 @@ Record.cs:
# 38| 4: [MethodCall] call to method WriteLine
# 38| -1: [TypeAccess] access to type Console
# 38| 0: [TypeMention] Console
# 38| 0: [StringLiteral] "Shredding furniture"
# 38| 0: [StringLiteralUtf16] "Shredding furniture"
# 41| [RecordClass] Dog
# 41| 12: [NEOperator] !=
#-----| 2: (Parameters)
@@ -988,7 +988,7 @@ Record.cs:
# 44| 4: [MethodCall] call to method WriteLine
# 44| -1: [TypeAccess] access to type Console
# 44| 0: [TypeMention] Console
# 44| 0: [StringLiteral] "It's tail wagging time"
# 44| 0: [StringLiteralUtf16] "It's tail wagging time"
# 46| 17: [Method] ToString
# 46| -1: [TypeMention] string
# 47| 4: [BlockStmt] {...}
@@ -1006,7 +1006,7 @@ Record.cs:
# 50| 0: [InterpolatedStringExpr] $"..."
# 50| 0: [MethodCall] call to method ToString
# 50| -1: [LocalVariableAccess] access to local variable s
# 50| 1: [StringLiteral] " is a dog"
# 50| 1: [StringLiteralUtf16] " is a dog"
# 54| [RecordClass] R1
# 54| 12: [NEOperator] !=
#-----| 2: (Parameters)
@@ -1059,16 +1059,16 @@ Record.cs:
# 62| 0: [LocalVariableAccess] access to local variable person
# 62| 1: [ObjectCreation] object creation of type Person
# 62| -1: [TypeMention] Person
# 62| 0: [StringLiteral] "Bill"
# 62| 1: [StringLiteral] "Wagner"
# 62| 0: [StringLiteralUtf16] "Bill"
# 62| 1: [StringLiteralUtf16] "Wagner"
# 63| 1: [LocalVariableDeclStmt] ... ...;
# 63| 0: [LocalVariableDeclAndInitExpr] Student student = ...
# 63| -1: [TypeMention] Student
# 63| 0: [LocalVariableAccess] access to local variable student
# 63| 1: [ObjectCreation] object creation of type Student
# 63| -1: [TypeMention] Student
# 63| 0: [StringLiteral] "Bill"
# 63| 1: [StringLiteral] "Wagner"
# 63| 0: [StringLiteralUtf16] "Bill"
# 63| 1: [StringLiteralUtf16] "Wagner"
# 63| 2: [IntLiteral] 11
# 65| 2: [ExprStmt] ...;
# 65| 0: [MethodCall] call to method WriteLine
@@ -1086,9 +1086,9 @@ Record.cs:
# 70| 0: [LocalVariableAccess] access to local variable p1
# 70| 1: [ObjectCreation] object creation of type Teacher1
# 70| -1: [TypeMention] Teacher1
# 70| 0: [StringLiteral] "Bill"
# 70| 1: [StringLiteral] "Wagner"
# 70| 2: [StringLiteral] "Math"
# 70| 0: [StringLiteralUtf16] "Bill"
# 70| 1: [StringLiteralUtf16] "Wagner"
# 70| 2: [StringLiteralUtf16] "Math"
# 72| 1: [ExprStmt] ...;
# 72| 0: [AssignExpr] ... = ...
# 72| 0: [TupleExpr] (..., ...)
@@ -1109,7 +1109,7 @@ Record.cs:
# 75| 1: [ObjectInitializer] { ..., ... }
# 75| 0: [MemberInitializer] ... = ...
# 75| 0: [PropertyCall] access to property FirstName
# 75| 1: [StringLiteral] "Paul"
# 75| 1: [StringLiteralUtf16] "Paul"
# 76| 4: [LocalVariableDeclStmt] ... ...;
# 76| 0: [LocalVariableDeclAndInitExpr] Teacher1 p3 = ...
# 76| -1: [TypeMention] Teacher1
@@ -1122,10 +1122,10 @@ Record.cs:
# 76| 1: [ObjectInitializer] { ..., ... }
# 76| 0: [MemberInitializer] ... = ...
# 76| 0: [PropertyCall] access to property FirstName
# 76| 1: [StringLiteral] "Paul"
# 76| 1: [StringLiteralUtf16] "Paul"
# 76| 1: [MemberInitializer] ... = ...
# 76| 0: [PropertyCall] access to property Subject
# 76| 1: [StringLiteral] "Literature"
# 76| 1: [StringLiteralUtf16] "Literature"
# 77| 5: [LocalVariableDeclStmt] ... ...;
# 77| 0: [LocalVariableDeclAndInitExpr] Person1 clone = ...
# 77| -1: [TypeMention] Person1
@@ -1142,8 +1142,8 @@ Record.cs:
# 82| 0: [LocalVariableAccess] access to local variable a
# 82| 1: [ObjectCreation] object creation of type R2
# 82| -1: [TypeMention] R2
# 82| 0: [StringLiteral] "A"
# 82| 1: [StringLiteral] "B"
# 82| 0: [StringLiteralUtf16] "A"
# 82| 1: [StringLiteralUtf16] "B"
# 83| 1: [LocalVariableDeclStmt] ... ...;
# 83| 0: [LocalVariableDeclAndInitExpr] R1 b = ...
# 83| -1: [TypeMention] R1
@@ -1158,7 +1158,7 @@ Record.cs:
# 84| 1: [ObjectInitializer] { ..., ... }
# 84| 0: [MemberInitializer] ... = ...
# 84| 0: [PropertyCall] access to property A
# 84| 1: [StringLiteral] "C"
# 84| 1: [StringLiteralUtf16] "C"
RelationalPattern.cs:
# 3| [Class] RelationalPattern
# 5| 5: [Method] M1
@@ -1208,14 +1208,14 @@ RelationalPattern.cs:
# 16| -1: [ParameterAccess] access to parameter i
# 18| 0: [SwitchCaseExpr] ... => ...
# 18| 0: [ConstantPatternExpr,IntLiteral] 1
# 18| 2: [StringLiteral] "1"
# 18| 2: [StringLiteralUtf16] "1"
# 19| 1: [SwitchCaseExpr] ... => ...
# 19| 0: [GTPattern] > ...
# 19| 0: [IntLiteral] 1
# 19| 2: [StringLiteral] ">1"
# 19| 2: [StringLiteralUtf16] ">1"
# 20| 2: [SwitchCaseExpr] ... => ...
# 20| 0: [DiscardPatternExpr] _
# 20| 2: [StringLiteral] "other"
# 20| 2: [StringLiteralUtf16] "other"
TargetType.cs:
# 5| [Class] TargetType
# 7| 5: [Method] M2
@@ -1559,7 +1559,7 @@ UnaryPattern.cs:
# 18| 0: [SwitchCaseExpr] ... => ...
# 18| 0: [NotPatternExpr] not ...
# 18| 0: [ConstantPatternExpr,IntLiteral] 1
# 18| 2: [StringLiteral] "not 1"
# 18| 2: [StringLiteralUtf16] "not 1"
# 19| 1: [SwitchCaseExpr] ... => ...
# 19| 0: [DiscardPatternExpr] _
# 19| 2: [StringLiteral] "other"
# 19| 2: [StringLiteralUtf16] "other"

View File

@@ -198,7 +198,7 @@ definitions.cs:
# 84| -1: [PropertyCall] access to property Now
# 84| -1: [TypeAccess] access to type DateTime
# 84| 0: [TypeMention] DateTime
# 84| 0: [StringLiteral] "HH:mm:ss"
# 84| 0: [StringLiteralUtf16] "HH:mm:ss"
# 86| 1: [SpecificCatchClause] catch (...) {...}
# 86| 0: [LocalVariableDeclExpr] Exception e
# 86| 0: [TypeMention] Exception

View File

@@ -245,7 +245,7 @@ delegates.cs:
# 79| 0: [IntLiteral] 3
# 79| 1: [DelegateCall] delegate call
# 79| -1: [LocalVariableAccess] access to local variable ps
# 79| 0: [StringLiteral] ""
# 79| 0: [StringLiteralUtf16] ""
# 81| 16: [LocalVariableDeclStmt] ... ...;
# 81| 0: [LocalVariableDeclExpr] ContextCallback d
# 81| 0: [TypeMention] ContextCallback

View File

@@ -61,14 +61,14 @@ dynamic.cs:
# 18| -1: [TypeMention] KeyValuePair<string, dynamic>
# 18| 1: [TypeMention] string
# 18| 2: [TypeMention] dynamic
# 18| 0: [StringLiteral] ""
# 18| 0: [StringLiteralUtf16] ""
# 18| 1: [LocalVariableAccess] access to local variable d
# 19| 7: [ExprStmt] ...;
# 19| 0: [DynamicObjectCreation] dynamic object creation of type KeyValuePair<String,dynamic>
# 19| -1: [TypeMention] KeyValuePair<string, dynamic>
# 19| 1: [TypeMention] string
# 19| 2: [TypeMention] dynamic
# 19| 0: [StringLiteral] ""
# 19| 0: [StringLiteralUtf16] ""
# 19| 1: [LocalVariableAccess] access to local variable d
# 22| 8: [ExprStmt] ...;
# 22| 0: [ObjectCreation] object creation of type DynamicTest
@@ -86,14 +86,14 @@ dynamic.cs:
# 26| 10: [ExprStmt] ...;
# 26| 0: [DynamicMethodCall] dynamic call to method Bar
# 26| -1: [LocalVariableAccess] access to local variable d
# 26| 0: [StringLiteral] ""
# 26| 0: [StringLiteralUtf16] ""
# 27| 11: [ExprStmt] ...;
# 27| 0: [DynamicMethodCall] dynamic call to method Foo
# 27| 0: [LocalVariableAccess] access to local variable d
# 30| 12: [ExprStmt] ...;
# 30| 0: [MethodCall] call to method Bar
# 30| -1: [LocalVariableAccess] access to local variable dt
# 30| 0: [StringLiteral] ""
# 30| 0: [StringLiteralUtf16] ""
# 31| 13: [ExprStmt] ...;
# 31| 0: [MethodCall] call to method Foo
# 31| 0: [IntLiteral] 0

View File

@@ -84,7 +84,7 @@ enums.cs:
# 58| 0: [MethodCall] call to method Format
# 58| -1: [TypeAccess] access to type String
# 58| 0: [TypeMention] string
# 58| 0: [StringLiteral] "Red = {0}"
# 58| 0: [StringLiteralUtf16] "Red = {0}"
# 58| 1: [CastExpr] (...) ...
# 58| 1: [CastExpr] (...) ...
# 58| 0: [TypeAccess] access to type Int32
@@ -98,7 +98,7 @@ enums.cs:
# 59| 0: [MethodCall] call to method Format
# 59| -1: [TypeAccess] access to type String
# 59| 0: [TypeMention] string
# 59| 0: [StringLiteral] "Green = {0}"
# 59| 0: [StringLiteralUtf16] "Green = {0}"
# 59| 1: [CastExpr] (...) ...
# 59| 1: [CastExpr] (...) ...
# 59| 0: [TypeAccess] access to type Int32
@@ -112,7 +112,7 @@ enums.cs:
# 60| 0: [MethodCall] call to method Format
# 60| -1: [TypeAccess] access to type String
# 60| 0: [TypeMention] string
# 60| 0: [StringLiteral] "Blue = {0}"
# 60| 0: [StringLiteralUtf16] "Blue = {0}"
# 60| 1: [CastExpr] (...) ...
# 60| 1: [CastExpr] (...) ...
# 60| 0: [TypeAccess] access to type Int32
@@ -120,4 +120,4 @@ enums.cs:
# 60| 1: [ParameterAccess] access to parameter c
# 61| 6: [DefaultCase] default:
# 61| 7: [ReturnStmt] return ...;
# 61| 0: [StringLiteral] "Invalid color"
# 61| 0: [StringLiteralUtf16] "Invalid color"

View File

@@ -230,7 +230,7 @@ exceptions.cs:
# 193| 0: [LocalVariableDeclAndInitExpr] String v = ...
# 193| -1: [TypeMention] string
# 193| 0: [LocalVariableAccess] access to local variable v
# 193| 1: [StringLiteral] ""
# 193| 1: [StringLiteralUtf16] ""
# 195| 1: [SpecificCatchClause] catch (...) {...}
# 195| 0: [LocalVariableDeclExpr] NullReferenceException ex
# 195| 0: [TypeMention] NullReferenceException
@@ -265,7 +265,7 @@ exceptions.cs:
# 221| 0: [LocalVariableDeclAndInitExpr] String s = ...
# 221| -1: [TypeMention] string
# 221| 0: [LocalVariableAccess] access to local variable s
# 221| 1: [StringLiteral] ""
# 221| 1: [StringLiteralUtf16] ""
# 222| 1: [EmptyStmt] ;
# 223| 2: [LocalVariableDeclStmt] ... ...;
# 223| 0: [LocalVariableDeclAndInitExpr] String v = ...

View File

@@ -508,7 +508,7 @@ expressions.cs:
# 32| 20: [ExprStmt] ...;
# 32| 0: [AssignExpr] ... = ...
# 32| 0: [LocalVariableAccess] access to local variable s
# 32| 1: [StringLiteral] "test"
# 32| 1: [StringLiteralUtf16] "test"
# 33| 21: [LocalVariableDeclStmt] ... ...;
# 33| 0: [LocalVariableDeclExpr] Object o
# 33| 0: [TypeMention] object
@@ -552,7 +552,7 @@ expressions.cs:
# 44| -1: [TypeMention] string
# 44| 1: [AssignExpr] ... = ...
# 44| 0: [MemberConstantAccess] access to constant constant
# 44| 1: [StringLiteral] "constant"
# 44| 1: [StringLiteralUtf16] "constant"
# 45| 7: [Field] f
# 45| -1: [TypeMention] int
# 45| 1: [AssignExpr] ... = ...
@@ -567,7 +567,7 @@ expressions.cs:
# 51| 0: [FieldAccess] access to field name
# 51| -1: [TypeAccess] access to type Class
# 51| 0: [TypeMention] Class
# 51| 1: [StringLiteral] ""
# 51| 1: [StringLiteralUtf16] ""
# 52| 1: [ExprStmt] ...;
# 52| 0: [MethodCall] call to method Foo
# 52| -1: [TypeAccess] access to type Class
@@ -632,7 +632,7 @@ expressions.cs:
# 75| 1: [IntLiteral] 2
# 75| 1: [MethodCall] call to method Equals
# 75| -1: [ParameterAccess] access to parameter s
# 75| 0: [StringLiteral] ""
# 75| 0: [StringLiteralUtf16] ""
# 76| 4: [Setter] set_Item
#-----| 2: (Parameters)
# 73| 0: [Parameter] i
@@ -656,7 +656,7 @@ expressions.cs:
# 81| 0: [ExprStmt] ...;
# 81| 0: [AssignExpr] ... = ...
# 81| 0: [PropertyCall] access to property Name
# 81| 1: [StringLiteral] "aName"
# 81| 1: [StringLiteralUtf16] "aName"
# 82| 1: [LocalVariableDeclStmt] ... ...;
# 82| 0: [LocalVariableDeclAndInitExpr] String n = ...
# 82| -1: [TypeMention] string
@@ -690,7 +690,7 @@ expressions.cs:
# 85| 1: [IndexerCall] access to indexer
# 85| -1: [ThisAccess] this access
# 85| 0: [IntLiteral] 0
# 85| 1: [StringLiteral] ""
# 85| 1: [StringLiteralUtf16] ""
# 86| 5: [LocalVariableDeclStmt] ... ...;
# 86| 0: [LocalVariableDeclAndInitExpr] Int32[] array = ...
# 86| -1: [TypeMention] Int32[]
@@ -771,7 +771,7 @@ expressions.cs:
# 100| 1: [AddExpr] ... + ...
# 100| 0: [AddExpr] ... + ...
# 100| 0: [ParameterAccess] access to parameter s
# 100| 1: [StringLiteral] " "
# 100| 1: [StringLiteralUtf16] " "
# 100| 1: [CastExpr] (...) ...
# 100| 1: [LocalVariableAccess] access to local variable i
# 103| 18: [Class] Y<,>
@@ -873,7 +873,7 @@ expressions.cs:
# 138| 1: [IntLiteral] 3
# 138| 4: [CastExpr] (...) ...
# 138| 1: [IntLiteral] 4
# 138| 5: [StringLiteral] ""
# 138| 5: [StringLiteralUtf16] ""
# 143| 22: [Method] MainLocalVarDecl
# 143| -1: [TypeMention] Void
# 144| 4: [BlockStmt] {...}
@@ -911,7 +911,7 @@ expressions.cs:
# 150| 0: [LocalVariableDeclAndInitExpr] String y = ...
# 150| -1: [TypeMention] string
# 150| 0: [LocalVariableAccess] access to local variable y
# 150| 1: [StringLiteral] "test"
# 150| 1: [StringLiteralUtf16] "test"
# 153| 23: [Method] MainLocalConstDecl
# 153| -1: [TypeMention] Void
# 154| 4: [BlockStmt] {...}
@@ -1088,7 +1088,7 @@ expressions.cs:
# 192| 0: [IntLiteral] 3
# 192| 1: [DelegateCall] delegate call
# 192| -1: [LocalVariableAccess] access to local variable ps
# 192| 0: [StringLiteral] ""
# 192| 0: [StringLiteralUtf16] ""
# 194| 16: [LocalVariableDeclStmt] ... ...;
# 194| 0: [LocalVariableDeclExpr] ContextCallback d
# 194| 0: [TypeMention] ContextCallback
@@ -1648,26 +1648,26 @@ expressions.cs:
# 400| -1: [ObjectInitializer] { ..., ... }
# 401| 0: [MemberInitializer] ... = ...
# 401| 0: [PropertyCall] access to property Name
# 401| 1: [StringLiteral] "Chris Smith"
# 401| 1: [StringLiteralUtf16] "Chris Smith"
# 402| 1: [MemberInitializer] ... = ...
# 402| 0: [PropertyCall] access to property PhoneNumbers
# 402| 1: [CollectionInitializer] { ..., ... }
# 402| 0: [ElementInitializer] call to method Add
# 402| 0: [StringLiteral] "206-555-0101"
# 402| 0: [StringLiteralUtf16] "206-555-0101"
# 402| 1: [ElementInitializer] call to method Add
# 402| 0: [StringLiteral] "425-882-8080"
# 402| 0: [StringLiteralUtf16] "425-882-8080"
# 404| 1: [ElementInitializer] call to method Add
# 404| 0: [ObjectCreation] object creation of type Contact
# 404| -2: [TypeMention] Contact
# 404| -1: [ObjectInitializer] { ..., ... }
# 405| 0: [MemberInitializer] ... = ...
# 405| 0: [PropertyCall] access to property Name
# 405| 1: [StringLiteral] "Bob Harris"
# 405| 1: [StringLiteralUtf16] "Bob Harris"
# 406| 1: [MemberInitializer] ... = ...
# 406| 0: [PropertyCall] access to property PhoneNumbers
# 406| 1: [CollectionInitializer] { ..., ... }
# 406| 0: [ElementInitializer] call to method Add
# 406| 0: [StringLiteral] "650-555-0199"
# 406| 0: [StringLiteralUtf16] "650-555-0199"
# 409| 5: [LocalVariableDeclStmt] ... ...;
# 409| 0: [LocalVariableDeclAndInitExpr] Int32[,] is1 = ...
# 409| -1: [TypeMention] Int32[,]
@@ -1752,11 +1752,11 @@ expressions.cs:
# 415| 1: [ArrayCreation] array creation of type String[,]
# 415| -1: [ArrayInitializer] { ..., ... }
# 415| 0: [ArrayInitializer] { ..., ... }
# 415| 0: [StringLiteral] "hello"
# 415| 0: [StringLiteralUtf16] "hello"
# 415| 1: [NullLiteral] null
# 415| 1: [ArrayInitializer] { ..., ... }
# 415| 0: [StringLiteral] "world"
# 415| 1: [StringLiteral] "!"
# 415| 0: [StringLiteralUtf16] "world"
# 415| 1: [StringLiteralUtf16] "!"
# 416| 12: [LocalVariableDeclStmt] ... ...;
# 416| 0: [LocalVariableDeclAndInitExpr] <>__AnonType0<String,String[]>[] contacts2 = ...
# 416| -1: [TypeMention] <>__AnonType0<String,String[]>[]
@@ -1767,23 +1767,23 @@ expressions.cs:
# 417| -1: [ObjectInitializer] { ..., ... }
# 418| 0: [MemberInitializer] ... = ...
# 418| 0: [PropertyCall] access to property Name
# 418| 1: [StringLiteral] "Chris Smith"
# 418| 1: [StringLiteralUtf16] "Chris Smith"
# 419| 1: [MemberInitializer] ... = ...
# 419| 0: [PropertyCall] access to property PhoneNumbers
# 419| 1: [ArrayCreation] array creation of type String[]
# 419| -1: [ArrayInitializer] { ..., ... }
# 419| 0: [StringLiteral] "206-555-0101"
# 419| 1: [StringLiteral] "425-882-8080"
# 419| 0: [StringLiteralUtf16] "206-555-0101"
# 419| 1: [StringLiteralUtf16] "425-882-8080"
# 421| 1: [AnonymousObjectCreation] object creation of type <>__AnonType0<String,String[]>
# 421| -1: [ObjectInitializer] { ..., ... }
# 422| 0: [MemberInitializer] ... = ...
# 422| 0: [PropertyCall] access to property Name
# 422| 1: [StringLiteral] "Bob Harris"
# 422| 1: [StringLiteralUtf16] "Bob Harris"
# 423| 1: [MemberInitializer] ... = ...
# 423| 0: [PropertyCall] access to property PhoneNumbers
# 423| 1: [ArrayCreation] array creation of type String[]
# 423| -1: [ArrayInitializer] { ..., ... }
# 423| 0: [StringLiteral] "650-555-0199"
# 423| 0: [StringLiteralUtf16] "650-555-0199"
# 426| 13: [LocalVariableDeclStmt] ... ...;
# 426| 0: [LocalVariableDeclAndInitExpr] Int32 i = ...
# 426| -1: [TypeMention] int
@@ -2056,7 +2056,7 @@ expressions.cs:
# 452| 0: [AddExpr] ... + ...
# 452| 0: [CastExpr] (...) ...
# 452| 1: [ParameterAccess] access to parameter x
# 452| 1: [StringLiteral] ""
# 452| 1: [StringLiteralUtf16] ""
# 453| 4: [LocalVariableDeclStmt] ... ...;
# 453| 0: [LocalVariableDeclAndInitExpr] S f5 = ...
# 453| -1: [TypeMention] S

View File

@@ -65,7 +65,7 @@ fields.cs:
# 37| -1: [TypeMention] string
# 37| 1: [AssignExpr] ... = ...
# 37| 0: [FieldAccess] access to field s
# 37| 1: [StringLiteral] "Hello"
# 37| 1: [StringLiteralUtf16] "Hello"
# 39| 10: [Method] Main
# 39| -1: [TypeMention] Void
# 40| 4: [BlockStmt] {...}

View File

@@ -99,7 +99,7 @@ Nesting.cs:
# 28| 0: [MethodCall] call to method MA2<String>
# 28| -1: [LocalVariableAccess] access to local variable a1
# 28| 0: [IntLiteral] 0
# 28| 1: [StringLiteral] ""
# 28| 1: [StringLiteralUtf16] ""
# 30| 3: [LocalVariableDeclStmt] ... ...;
# 30| 0: [LocalVariableDeclAndInitExpr] A<String> a2 = ...
# 30| -1: [TypeMention] A<string>
@@ -110,11 +110,11 @@ Nesting.cs:
# 31| 4: [ExprStmt] ...;
# 31| 0: [MethodCall] call to method MA1
# 31| -1: [LocalVariableAccess] access to local variable a2
# 31| 0: [StringLiteral] ""
# 31| 0: [StringLiteralUtf16] ""
# 32| 5: [ExprStmt] ...;
# 32| 0: [MethodCall] call to method MA2<Int32>
# 32| -1: [LocalVariableAccess] access to local variable a2
# 32| 0: [StringLiteral] ""
# 32| 0: [StringLiteralUtf16] ""
# 32| 1: [IntLiteral] 0
# 34| 6: [LocalVariableDeclStmt] ... ...;
# 34| 0: [LocalVariableDeclAndInitExpr] B<String> b1 = ...
@@ -129,12 +129,12 @@ Nesting.cs:
# 35| 0: [MethodCall] call to method MB1
# 35| -1: [LocalVariableAccess] access to local variable b1
# 35| 0: [IntLiteral] 0
# 35| 1: [StringLiteral] ""
# 35| 1: [StringLiteralUtf16] ""
# 36| 8: [ExprStmt] ...;
# 36| 0: [MethodCall] call to method MB2<Boolean>
# 36| -1: [LocalVariableAccess] access to local variable b1
# 36| 0: [IntLiteral] 0
# 36| 1: [StringLiteral] ""
# 36| 1: [StringLiteralUtf16] ""
# 36| 2: [BoolLiteral] false
# 38| 9: [LocalVariableDeclStmt] ... ...;
# 38| 0: [LocalVariableDeclAndInitExpr] B<Int32> b2 = ...
@@ -148,12 +148,12 @@ Nesting.cs:
# 39| 10: [ExprStmt] ...;
# 39| 0: [MethodCall] call to method MB1
# 39| -1: [LocalVariableAccess] access to local variable b2
# 39| 0: [StringLiteral] ""
# 39| 0: [StringLiteralUtf16] ""
# 39| 1: [IntLiteral] 0
# 40| 11: [ExprStmt] ...;
# 40| 0: [MethodCall] call to method MB2<Boolean>
# 40| -1: [LocalVariableAccess] access to local variable b2
# 40| 0: [StringLiteral] ""
# 40| 0: [StringLiteralUtf16] ""
# 40| 1: [IntLiteral] 0
# 40| 2: [BoolLiteral] false
# 42| 12: [LocalVariableDeclStmt] ... ...;
@@ -184,11 +184,11 @@ Nesting.cs:
# 47| 16: [ExprStmt] ...;
# 47| 0: [MethodCall] call to method MC1
# 47| -1: [LocalVariableAccess] access to local variable c2
# 47| 0: [StringLiteral] ""
# 47| 0: [StringLiteralUtf16] ""
# 48| 17: [ExprStmt] ...;
# 48| 0: [MethodCall] call to method MC2<Boolean>
# 48| -1: [LocalVariableAccess] access to local variable c2
# 48| 0: [StringLiteral] ""
# 48| 0: [StringLiteralUtf16] ""
# 48| 1: [BoolLiteral] false
# 50| 18: [LocalVariableDeclStmt] ... ...;
# 50| 0: [LocalVariableDeclAndInitExpr] D<Boolean> d1 = ...
@@ -210,7 +210,7 @@ Nesting.cs:
# 52| -1: [LocalVariableAccess] access to local variable d1
# 52| 0: [IntLiteral] 0
# 52| 1: [BoolLiteral] false
# 52| 2: [StringLiteral] ""
# 52| 2: [StringLiteralUtf16] ""
# 54| 21: [LocalVariableDeclStmt] ... ...;
# 54| 0: [LocalVariableDeclAndInitExpr] D<Decimal> d2 = ...
# 54| -1: [TypeMention] D<decimal>
@@ -224,12 +224,12 @@ Nesting.cs:
# 55| 22: [ExprStmt] ...;
# 55| 0: [MethodCall] call to method MD1
# 55| -1: [LocalVariableAccess] access to local variable d2
# 55| 0: [StringLiteral] ""
# 55| 0: [StringLiteralUtf16] ""
# 55| 1: [DecimalLiteral] 0
# 56| 23: [ExprStmt] ...;
# 56| 0: [MethodCall] call to method MD2<Boolean>
# 56| -1: [LocalVariableAccess] access to local variable d2
# 56| 0: [StringLiteral] ""
# 56| 0: [StringLiteralUtf16] ""
# 56| 1: [DecimalLiteral] 0
# 56| 2: [BoolLiteral] false
generics.cs:
@@ -532,8 +532,8 @@ generics.cs:
# 113| 3: [ExprStmt] ...;
# 113| 0: [MethodCall] call to method fooParams
# 113| -1: [LocalVariableAccess] access to local variable bs
# 113| 0: [StringLiteral] "a"
# 113| 1: [StringLiteral] "b"
# 113| 0: [StringLiteralUtf16] "a"
# 113| 1: [StringLiteralUtf16] "b"
# 115| 4: [ExprStmt] ...;
# 115| 0: [MethodCall] call to method staticFoo
# 115| -1: [TypeAccess] access to type B<Object>
@@ -543,7 +543,7 @@ generics.cs:
# 117| 0: [AssignExpr] ... = ...
# 117| 0: [PropertyCall] access to property Name
# 117| -1: [LocalVariableAccess] access to local variable bs
# 117| 1: [StringLiteral] ""
# 117| 1: [StringLiteralUtf16] ""
# 118| 6: [ExprStmt] ...;
# 118| 0: [AddEventExpr] ... += ...
# 118| 0: [EventAccess,EventCall] access to event myEvent
@@ -594,7 +594,7 @@ generics.cs:
# 125| 3: [TypeMention] string
# 125| 0: [DoubleLiteral] 1
# 125| 1: [IntLiteral] 2
# 125| 2: [StringLiteral] "3"
# 125| 2: [StringLiteralUtf16] "3"
# 125| 3: [BoolLiteral] true
# 127| 12: [ExprStmt] ...;
# 127| 0: [MethodCall] call to method bar<Int32>
@@ -602,7 +602,7 @@ generics.cs:
# 127| 0: [TypeMention] A<string>
# 127| 1: [TypeMention] string
# 127| 0: [IntLiteral] 2
# 127| 1: [StringLiteral] ""
# 127| 1: [StringLiteralUtf16] ""
# 128| 13: [ExprStmt] ...;
# 128| 0: [MethodCall] call to method bar<Test>
# 128| -1: [ObjectCreation] object creation of type A<Int32>

View File

@@ -11,29 +11,29 @@ goto.cs:
# 9| 0: [LocalVariableDeclAndInitExpr] String s = ...
# 9| -1: [TypeMention] string
# 9| 0: [LocalVariableAccess] access to local variable s
# 9| 1: [StringLiteral] "5"
# 9| 1: [StringLiteralUtf16] "5"
# 10| 3: [SwitchStmt] switch (...) {...}
# 10| 0: [LocalVariableAccess] access to local variable s
# 12| 0: [ConstCase] case ...:
# 12| 0: [ConstantPatternExpr,NullLiteral] null
# 12| 1: [LabelStmt] s3:
# 12| 2: [GotoCaseStmt] goto case ...;
# 12| 0: [StringLiteral] "1"
# 12| 0: [StringLiteralUtf16] "1"
# 13| 3: [ConstCase] case ...:
# 13| 0: [ConstantPatternExpr,StringLiteral] "1"
# 13| 0: [ConstantPatternExpr,StringLiteralUtf16] "1"
# 13| 4: [LabelStmt] s4:
# 13| 5: [GotoCaseStmt] goto case ...;
# 13| 0: [StringLiteral] "2"
# 13| 0: [StringLiteralUtf16] "2"
# 14| 6: [ConstCase] case ...:
# 14| 0: [ConstantPatternExpr,StringLiteral] "2"
# 14| 0: [ConstantPatternExpr,StringLiteralUtf16] "2"
# 14| 7: [LabelStmt] s5:
# 14| 8: [GotoLabelStmt] goto ...;
# 15| 9: [ConstCase] case ...:
# 15| 0: [ConstantPatternExpr,StringLiteral] "3"
# 15| 0: [ConstantPatternExpr,StringLiteralUtf16] "3"
# 15| 10: [LabelStmt] s6:
# 15| 11: [GotoDefaultStmt] goto default;
# 16| 12: [ConstCase] case ...:
# 16| 0: [ConstantPatternExpr,StringLiteral] "4"
# 16| 0: [ConstantPatternExpr,StringLiteralUtf16] "4"
# 16| 13: [LabelStmt] s7:
# 16| 14: [BreakStmt] break;
# 17| 15: [DefaultCase] default:

View File

@@ -206,7 +206,7 @@ indexers.cs:
# 76| 0: [MethodCall] call to method WriteLine
# 76| -1: [TypeAccess] access to type Console
# 76| 0: [TypeMention] Console
# 76| 0: [StringLiteral] "Found {0} primes between 1 and {1}"
# 76| 0: [StringLiteralUtf16] "Found {0} primes between 1 and {1}"
# 76| 1: [CastExpr] (...) ...
# 76| 1: [LocalVariableAccess] access to local variable count
# 76| 2: [CastExpr] (...) ...

View File

@@ -42,7 +42,7 @@ methods.cs:
# 21| 0: [MethodCall] call to method WriteLine
# 21| -1: [TypeAccess] access to type Console
# 21| 0: [TypeMention] Console
# 21| 0: [StringLiteral] "{0} {1}"
# 21| 0: [StringLiteralUtf16] "{0} {1}"
# 21| 1: [CastExpr] (...) ...
# 21| 1: [LocalVariableAccess] access to local variable i
# 21| 2: [CastExpr] (...) ...
@@ -51,7 +51,7 @@ methods.cs:
# 22| 0: [MethodCall] call to method WriteLine
# 22| -1: [TypeAccess] access to type Console
# 22| 0: [TypeMention] Console
# 22| 0: [StringLiteral] "{0} {1}"
# 22| 0: [StringLiteralUtf16] "{0} {1}"
# 22| 1: [CastExpr] (...) ...
# 22| 1: [LocalVariableAccess] access to local variable i
# 22| 2: [CastExpr] (...) ...
@@ -99,7 +99,7 @@ methods.cs:
# 39| 0: [MethodCall] call to method WriteLine
# 39| -1: [TypeAccess] access to type Console
# 39| 0: [TypeMention] Console
# 39| 0: [StringLiteral] "{0} {1}"
# 39| 0: [StringLiteralUtf16] "{0} {1}"
# 39| 1: [CastExpr] (...) ...
# 39| 1: [LocalVariableAccess] access to local variable res
# 39| 2: [CastExpr] (...) ...
@@ -131,7 +131,7 @@ methods.cs:
# 55| 0: [MethodCall] call to method WriteLine
# 55| -1: [TypeAccess] access to type Console
# 55| 0: [TypeMention] Console
# 55| 0: [StringLiteral] "F()"
# 55| 0: [StringLiteralUtf16] "F()"
# 58| 6: [Method] F
# 58| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -142,7 +142,7 @@ methods.cs:
# 60| 0: [MethodCall] call to method WriteLine
# 60| -1: [TypeAccess] access to type Console
# 60| 0: [TypeMention] Console
# 60| 0: [StringLiteral] "F(object)"
# 60| 0: [StringLiteralUtf16] "F(object)"
# 63| 7: [Method] F
# 63| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -153,7 +153,7 @@ methods.cs:
# 65| 0: [MethodCall] call to method WriteLine
# 65| -1: [TypeAccess] access to type Console
# 65| 0: [TypeMention] Console
# 65| 0: [StringLiteral] "F(int)"
# 65| 0: [StringLiteralUtf16] "F(int)"
# 68| 8: [Method] F
# 68| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -164,7 +164,7 @@ methods.cs:
# 70| 0: [MethodCall] call to method WriteLine
# 70| -1: [TypeAccess] access to type Console
# 70| 0: [TypeMention] Console
# 70| 0: [StringLiteral] "F(double)"
# 70| 0: [StringLiteralUtf16] "F(double)"
# 73| 9: [Method] F<>
# 73| -1: [TypeMention] Void
#-----| 1: (Type parameters)
@@ -177,7 +177,7 @@ methods.cs:
# 75| 0: [MethodCall] call to method WriteLine
# 75| -1: [TypeAccess] access to type Console
# 75| 0: [TypeMention] Console
# 75| 0: [StringLiteral] "F<T>(T)"
# 75| 0: [StringLiteralUtf16] "F<T>(T)"
# 78| 12: [Method] F
# 78| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -190,7 +190,7 @@ methods.cs:
# 80| 0: [MethodCall] call to method WriteLine
# 80| -1: [TypeAccess] access to type Console
# 80| 0: [TypeMention] Console
# 80| 0: [StringLiteral] "F(double, double)"
# 80| 0: [StringLiteralUtf16] "F(double, double)"
# 83| 13: [Method] Main
# 83| -1: [TypeMention] Void
# 84| 4: [BlockStmt] {...}
@@ -204,7 +204,7 @@ methods.cs:
# 87| 0: [DoubleLiteral] 1
# 88| 3: [ExprStmt] ...;
# 88| 0: [MethodCall] call to method F<String>
# 88| 0: [StringLiteral] "abc"
# 88| 0: [StringLiteralUtf16] "abc"
# 89| 4: [ExprStmt] ...;
# 89| 0: [MethodCall] call to method F
# 89| 0: [CastExpr] (...) ...
@@ -307,7 +307,7 @@ methods.cs:
# 119| 8: [Method] CallToInt32
# 119| -1: [TypeMention] int
# 119| 4: [MethodCall] call to method ToInt32
# 119| 0: [StringLiteral] "0"
# 119| 0: [StringLiteralUtf16] "0"
# 122| 6: [Class] TestExtensions
# 125| 4: [Method] Main
# 125| -1: [TypeMention] Void
@@ -319,10 +319,10 @@ methods.cs:
# 127| 0: [LocalVariableAccess] access to local variable strings
# 127| 1: [ArrayCreation] array creation of type String[]
# 127| -1: [ArrayInitializer] { ..., ... }
# 127| 0: [StringLiteral] "1"
# 127| 1: [StringLiteral] "22"
# 127| 2: [StringLiteral] "333"
# 127| 3: [StringLiteral] "4444"
# 127| 0: [StringLiteralUtf16] "1"
# 127| 1: [StringLiteralUtf16] "22"
# 127| 2: [StringLiteralUtf16] "333"
# 127| 3: [StringLiteralUtf16] "4444"
# 128| 1: [ForeachStmt] foreach (... ... in ...) ...
# 128| 0: [LocalVariableDeclExpr] String s
# 128| 0: [TypeMention] string
@@ -341,12 +341,12 @@ methods.cs:
# 133| 0: [MethodCall] call to method ToInt32
# 133| -1: [TypeAccess] access to type Extensions
# 133| 0: [TypeMention] Extensions
# 133| 0: [StringLiteral] ""
# 133| 0: [StringLiteralUtf16] ""
# 135| 3: [ExprStmt] ...;
# 135| 0: [MethodCall] call to method ToBool
# 135| -1: [TypeAccess] access to type Extensions
# 135| 0: [TypeMention] Extensions
# 135| 0: [StringLiteral] "true"
# 135| 0: [StringLiteralUtf16] "true"
# 135| 1: [ImplicitDelegateCreation] delegate creation of type Func<String,Boolean>
# 135| 0: [MethodAccess] access to method Parse
# 135| -1: [TypeAccess] access to type Boolean
@@ -376,8 +376,8 @@ methods.cs:
# 146| 4: [Parameter] e
# 146| -1: [TypeMention] string
# 146| 1: [AddExpr] ... + ...
# 146| 0: [StringLiteral] "a"
# 146| 1: [StringLiteral] "b"
# 146| 0: [StringLiteralUtf16] "a"
# 146| 1: [StringLiteralUtf16] "b"
# 147| 4: [BlockStmt] {...}
# 150| 6: [InstanceConstructor] TestDefaultParameters
#-----| 2: (Parameters)
@@ -388,7 +388,7 @@ methods.cs:
#-----| 2: (Parameters)
# 154| 0: [Parameter] x
# 154| -1: [TypeMention] string
# 154| 1: [StringLiteral] "abc"
# 154| 1: [StringLiteralUtf16] "abc"
# 154| 1: [Parameter] y
# 154| -1: [TypeMention] double
# 154| 1: [ObjectCreation] object creation of type Double

View File

@@ -14,7 +14,7 @@ nestedtypes.cs:
# 19| 0: [MethodCall] call to method WriteLine
# 19| -1: [TypeAccess] access to type Console
# 19| 0: [TypeMention] Console
# 19| 0: [StringLiteral] "Base.F"
# 19| 0: [StringLiteralUtf16] "Base.F"
# 22| 9: [Class] C
# 26| 2: [Class] Derived
#-----| 3: (Base types)
@@ -76,7 +76,7 @@ nestedtypes.cs:
# 65| 0: [TypeMention] Outer<T>
# 65| 1: [TypeMention] T
# 65| 0: [ParameterAccess] access to parameter t
# 65| 1: [StringLiteral] "abc"
# 65| 1: [StringLiteralUtf16] "abc"
# 68| 1: [ExprStmt] ...;
# 68| 0: [MethodCall] call to method F
# 68| -1: [TypeAccess] access to type Inner<String>
@@ -86,7 +86,7 @@ nestedtypes.cs:
# 68| 0: [TypeMention] Outer<int>
# 68| 1: [TypeMention] int
# 68| 0: [IntLiteral] 3
# 68| 1: [StringLiteral] "abc"
# 68| 1: [StringLiteralUtf16] "abc"
# 69| 2: [LocalVariableDeclStmt] ... ...;
# 69| 0: [LocalVariableDeclAndInitExpr] Type type = ...
# 69| -1: [TypeMention] Type

View File

@@ -35,7 +35,7 @@ properties.cs:
# 29| 0: [AssignExpr] ... = ...
# 29| 0: [PropertyCall] access to property Caption
# 29| -1: [LocalVariableAccess] access to local variable okButton
# 29| 1: [StringLiteral] "OK"
# 29| 1: [StringLiteralUtf16] "OK"
# 30| 2: [LocalVariableDeclStmt] ... ...;
# 30| 0: [LocalVariableDeclAndInitExpr] String s = ...
# 30| -1: [TypeMention] string

View File

@@ -112,7 +112,7 @@ statements.cs:
# 37| 0: [LocalVariableDeclAndInitExpr] String y = ...
# 37| -1: [TypeMention] string
# 37| 0: [LocalVariableAccess] access to local variable y
# 37| 1: [StringLiteral] "test"
# 37| 1: [StringLiteralUtf16] "test"
# 40| 8: [Method] MainLocalConstDecl
# 40| -1: [TypeMention] Void
# 41| 4: [BlockStmt] {...}
@@ -179,13 +179,13 @@ statements.cs:
# 60| 0: [MethodCall] call to method WriteLine
# 60| -1: [TypeAccess] access to type Console
# 60| 0: [TypeMention] Console
# 60| 0: [StringLiteral] "No arguments"
# 60| 0: [StringLiteralUtf16] "No arguments"
# 63| 2: [BlockStmt] {...}
# 64| 0: [ExprStmt] ...;
# 64| 0: [MethodCall] call to method WriteLine
# 64| -1: [TypeAccess] access to type Console
# 64| 0: [TypeMention] Console
# 64| 0: [StringLiteral] "One or more arguments"
# 64| 0: [StringLiteralUtf16] "One or more arguments"
# 68| 11: [Method] MainSwitch
# 68| -1: [TypeMention] Void
#-----| 2: (Parameters)
@@ -207,7 +207,7 @@ statements.cs:
# 74| 0: [MethodCall] call to method WriteLine
# 74| -1: [TypeAccess] access to type Console
# 74| 0: [TypeMention] Console
# 74| 0: [StringLiteral] "No arguments"
# 74| 0: [StringLiteralUtf16] "No arguments"
# 75| 2: [BreakStmt] break;
# 76| 3: [ConstCase] case ...:
# 76| 0: [ConstantPatternExpr,IntLiteral] 1
@@ -215,14 +215,14 @@ statements.cs:
# 77| 0: [MethodCall] call to method WriteLine
# 77| -1: [TypeAccess] access to type Console
# 77| 0: [TypeMention] Console
# 77| 0: [StringLiteral] "One argument"
# 77| 0: [StringLiteralUtf16] "One argument"
# 78| 5: [BreakStmt] break;
# 79| 6: [DefaultCase] default:
# 80| 7: [ExprStmt] ...;
# 80| 0: [MethodCall] call to method WriteLine
# 80| -1: [TypeAccess] access to type Console
# 80| 0: [TypeMention] Console
# 80| 0: [StringLiteral] "{0} arguments"
# 80| 0: [StringLiteralUtf16] "{0} arguments"
# 80| 1: [CastExpr] (...) ...
# 80| 1: [LocalVariableAccess] access to local variable n
# 81| 8: [BreakStmt] break;
@@ -235,37 +235,37 @@ statements.cs:
# 87| 0: [SwitchStmt] switch (...) {...}
# 87| 0: [ParameterAccess] access to parameter foo
# 89| 0: [ConstCase] case ...:
# 89| 0: [ConstantPatternExpr,StringLiteral] "black"
# 89| 0: [ConstantPatternExpr,StringLiteralUtf16] "black"
# 90| 1: [ReturnStmt] return ...;
# 90| 0: [IntLiteral] 0
# 91| 2: [ConstCase] case ...:
# 91| 0: [ConstantPatternExpr,StringLiteral] "red"
# 91| 0: [ConstantPatternExpr,StringLiteralUtf16] "red"
# 92| 3: [ReturnStmt] return ...;
# 92| 0: [IntLiteral] 1
# 93| 4: [ConstCase] case ...:
# 93| 0: [ConstantPatternExpr,StringLiteral] "green"
# 93| 0: [ConstantPatternExpr,StringLiteralUtf16] "green"
# 94| 5: [ReturnStmt] return ...;
# 94| 0: [IntLiteral] 2
# 95| 6: [ConstCase] case ...:
# 95| 0: [ConstantPatternExpr,StringLiteral] "yellow"
# 95| 0: [ConstantPatternExpr,StringLiteralUtf16] "yellow"
# 96| 7: [ReturnStmt] return ...;
# 96| 0: [IntLiteral] 3
# 97| 8: [ConstCase] case ...:
# 97| 0: [ConstantPatternExpr,StringLiteral] "blue"
# 97| 0: [ConstantPatternExpr,StringLiteralUtf16] "blue"
# 98| 9: [ReturnStmt] return ...;
# 98| 0: [IntLiteral] 4
# 99| 10: [ConstCase] case ...:
# 99| 0: [ConstantPatternExpr,StringLiteral] "magenta"
# 99| 0: [ConstantPatternExpr,StringLiteralUtf16] "magenta"
# 100| 11: [ReturnStmt] return ...;
# 100| 0: [IntLiteral] 5
# 101| 12: [ConstCase] case ...:
# 101| 0: [ConstantPatternExpr,StringLiteral] "cyan"
# 101| 0: [ConstantPatternExpr,StringLiteralUtf16] "cyan"
# 102| 13: [ReturnStmt] return ...;
# 102| 0: [IntLiteral] 6
# 103| 14: [ConstCase] case ...:
# 103| 0: [ConstantPatternExpr,StringLiteral] "grey"
# 103| 0: [ConstantPatternExpr,StringLiteralUtf16] "grey"
# 104| 15: [ConstCase] case ...:
# 104| 0: [ConstantPatternExpr,StringLiteral] "white"
# 104| 0: [ConstantPatternExpr,StringLiteralUtf16] "white"
# 105| 16: [ReturnStmt] return ...;
# 105| 0: [IntLiteral] 7
# 107| 1: [ReturnStmt] return ...;
@@ -414,7 +414,7 @@ statements.cs:
# 160| -1: [ArrayAccess] access to array element
# 160| -1: [ParameterAccess] access to parameter args
# 160| 0: [LocalVariableAccess] access to local variable i
# 160| 0: [StringLiteral] "/"
# 160| 0: [StringLiteralUtf16] "/"
# 160| 1: [ContinueStmt] continue;
# 161| 1: [ExprStmt] ...;
# 161| 0: [MethodCall] call to method WriteLine
@@ -547,7 +547,7 @@ statements.cs:
# 226| 0: [MethodCall] call to method WriteLine
# 226| -1: [TypeAccess] access to type Console
# 226| 0: [TypeMention] Console
# 226| 0: [StringLiteral] "Good bye!"
# 226| 0: [StringLiteralUtf16] "Good bye!"
# 207| 0: [BlockStmt] {...}
# 208| 0: [IfStmt] if (...) ...
# 208| 0: [NEExpr] ... != ...
@@ -558,7 +558,7 @@ statements.cs:
# 210| 0: [ThrowStmt] throw ...;
# 210| 0: [ObjectCreation] object creation of type Exception
# 210| -1: [TypeMention] Exception
# 210| 0: [StringLiteral] "Two numbers required"
# 210| 0: [StringLiteralUtf16] "Two numbers required"
# 212| 1: [LocalVariableDeclStmt] ... ...;
# 212| 0: [LocalVariableDeclAndInitExpr] Double x = ...
# 212| -1: [TypeMention] double
@@ -602,7 +602,7 @@ statements.cs:
# 222| 0: [MethodCall] call to method WriteLine
# 222| -1: [TypeAccess] access to type Console
# 222| 0: [TypeMention] Console
# 222| 0: [StringLiteral] "Exception"
# 222| 0: [StringLiteralUtf16] "Exception"
# 230| 26: [Method] MainCheckedUnchecked
# 230| -1: [TypeMention] Void
# 231| 4: [BlockStmt] {...}
@@ -651,7 +651,7 @@ statements.cs:
# 252| 0: [ThrowStmt] throw ...;
# 252| 0: [ObjectCreation] object creation of type Exception
# 252| -1: [TypeMention] Exception
# 252| 0: [StringLiteral] "Insufficient funds"
# 252| 0: [StringLiteralUtf16] "Insufficient funds"
# 254| 1: [ExprStmt] ...;
# 254| 0: [AssignSubExpr] ... -= ...
# 254| 0: [FieldAccess] access to field balance
@@ -666,25 +666,25 @@ statements.cs:
# 261| 1: [MethodCall] call to method CreateText
# 261| -1: [TypeAccess] access to type File
# 261| 0: [TypeMention] File
# 261| 0: [StringLiteral] "test.txt"
# 261| 0: [StringLiteralUtf16] "test.txt"
# 262| 1: [BlockStmt] {...}
# 263| 0: [ExprStmt] ...;
# 263| 0: [MethodCall] call to method WriteLine
# 263| -1: [LocalVariableAccess] access to local variable w
# 263| 0: [StringLiteral] "Line one"
# 263| 0: [StringLiteralUtf16] "Line one"
# 264| 1: [ExprStmt] ...;
# 264| 0: [MethodCall] call to method WriteLine
# 264| -1: [LocalVariableAccess] access to local variable w
# 264| 0: [StringLiteral] "Line two"
# 264| 0: [StringLiteralUtf16] "Line two"
# 265| 2: [ExprStmt] ...;
# 265| 0: [MethodCall] call to method WriteLine
# 265| -1: [LocalVariableAccess] access to local variable w
# 265| 0: [StringLiteral] "Line three"
# 265| 0: [StringLiteralUtf16] "Line three"
# 267| 1: [UsingBlockStmt] using (...) {...}
# 267| 0: [MethodCall] call to method CreateText
# 267| -1: [TypeAccess] access to type File
# 267| 0: [TypeMention] File
# 267| 0: [StringLiteral] "test.txt"
# 267| 0: [StringLiteralUtf16] "test.txt"
# 268| 1: [BlockStmt] {...}
# 272| 29: [Method] MainLabeled
# 272| -1: [TypeMention] Void