Skip to content

Commit 8aeeec0

Browse files
committed
C#: Add namespace_access_expr because of nameof(Namespace)
1 parent ae36359 commit 8aeeec0

File tree

10 files changed

+3767
-4
lines changed

10 files changed

+3767
-4
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Access.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ static ExprKind AccessKind(Context cx, ISymbol symbol)
3333
case SymbolKind.Parameter:
3434
return ExprKind.PARAMETER_ACCESS;
3535

36+
case SymbolKind.Namespace:
37+
return ExprKind.NAMESPACE_ACCESS;
38+
3639
default:
3740
cx.ModelError(symbol, $"Unhandled access kind '{symbol.Kind}'");
3841
return ExprKind.UNKNOWN;

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Name.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public static Expression Create(ExpressionNodeInfo info)
5959
case SymbolKind.Parameter:
6060
return Access.Create(info, target, false, Parameter.GetAlreadyCreated(info.Context, (IParameterSymbol)target));
6161

62+
case SymbolKind.Namespace:
63+
return Access.Create(info, target, false, Namespace.Create(info.Context, (INamespaceSymbol)target));
64+
6265
default:
6366
throw new InternalError(info.Node, $"Unhandled identifier kind '{target.Kind}'");
6467
}

csharp/extractor/Semmle.Extraction.CSharp/Kinds/ExprKind.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public enum ExprKind
114114
POSITIONAL_PATTERN = 117,
115115
SWITCH_CASE = 118,
116116
ASSIGN_COALESCE = 119,
117-
SUPPRESS_NULLABLE_WARNING = 120
117+
SUPPRESS_NULLABLE_WARNING = 120,
118+
NAMESPACE_ACCESS = 121
118119
}
119120
}

csharp/ql/src/semmlecode.csharp.dbscheme

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ tokens(
214214
| @using_directive | @type_parameter_constraints | @external_element
215215
| @xmllocatable | @asp_element | @namespace;
216216

217-
@declaration = @callable | @generic | @assignable;
217+
@declaration = @callable | @generic | @assignable | @namespace;
218218

219219
@named_element = @namespace | @declaration;
220220

@@ -982,6 +982,7 @@ case @expr.kind of
982982
| 118 = @switch_case_expr
983983
| 119 = @assign_coalesce_expr
984984
| 120 = @suppress_nullable_warning_expr
985+
| 121 = @namespace_access_expr
985986
;
986987

987988
@switch = @switch_stmt | @switch_expr;
@@ -1004,7 +1005,7 @@ case @expr.kind of
10041005

10051006
@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr
10061007
| @method_access_expr | @type_access_expr | @dynamic_member_access_expr;
1007-
@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr;
1008+
@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr;
10081009
@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr;
10091010

10101011
@local_variable_access = @local_variable_access_expr | @local_var_decl_expr;
@@ -1084,7 +1085,7 @@ expr_access(
10841085
unique int accesser_id: @access_expr ref,
10851086
int target_id: @accessible ref);
10861087

1087-
@accessible = @method | @assignable | @local_function;
1088+
@accessible = @method | @assignable | @local_function | @namespace;
10881089

10891090
expr_location(
10901091
unique int id: @expr ref,

csharp/ql/src/semmlecode.csharp.dbscheme.stats

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,10 @@
760760
<v>7589</v>
761761
</e>
762762
<e>
763+
<k>@namespace_access_expr</k>
764+
<v>1000</v>
765+
</e>
766+
<e>
763767
<k>@interpolated_string_expr</k>
764768
<v>3470</v>
765769
</e>

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,9 @@ unsafe class ArrayTypesTest
164164
int*[][] field;
165165
}
166166

167+
class NameofNamespace
168+
{
169+
string s = nameof(System);
170+
}
171+
167172
// semmle-extractor-options: /r:System.Dynamic.Runtime.dll

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,4 @@
7979
| Program.cs:164:3:164:5 | Int32 |
8080
| Program.cs:164:3:164:6 | Int32* |
8181
| Program.cs:164:3:164:10 | Int32*[][] |
82+
| Program.cs:169:5:169:10 | String |

0 commit comments

Comments
 (0)