Skip to content

Commit d793486

Browse files
authored
Merge pull request github#6628 from tamasvajk/feature/fix-stub-escaping
C#: improve stubbing to escape more member names (not just fields)
2 parents b99c075 + 203ca3f commit d793486

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

csharp/ql/src/Stubs/Stubs.qll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -759,8 +759,9 @@ private string stubMethod(Method m, Assembly assembly) {
759759
then
760760
result =
761761
" " + stubModifiers(m) + stubClassName(m.(Method).getReturnType()) + " " +
762-
stubExplicitImplementation(m) + m.getUndecoratedName() + stubGenericMethodParams(m) + "(" +
763-
stubParameters(m) + ")" + stubTypeParametersConstraints(m) + stubImplementation(m) + ";\n"
762+
stubExplicitImplementation(m) + escapeIfKeyword(m.getUndecoratedName()) +
763+
stubGenericMethodParams(m) + "(" + stubParameters(m) + ")" +
764+
stubTypeParametersConstraints(m) + stubImplementation(m) + ";\n"
764765
else result = " // Stub generator skipped method: " + m.getName() + "\n"
765766
}
766767

@@ -786,7 +787,7 @@ pragma[noinline]
786787
private string stubEnumConstant(EnumConstant ec, Assembly assembly) {
787788
ec instanceof GeneratedMember and
788789
ec.getALocation() = assembly and
789-
result = " " + ec.getName() + ",\n"
790+
result = " " + escapeIfKeyword(ec.getName()) + ",\n"
790791
}
791792

792793
pragma[noinline]
@@ -795,7 +796,7 @@ private string stubProperty(Property p, Assembly assembly) {
795796
p.getALocation() = assembly and
796797
result =
797798
" " + stubModifiers(p) + stubClassName(p.getType()) + " " + stubExplicitImplementation(p) +
798-
p.getName() + " { " + stubGetter(p) + stubSetter(p) + "}\n"
799+
escapeIfKeyword(p.getName()) + " { " + stubGetter(p) + stubSetter(p) + "}\n"
799800
}
800801

801802
pragma[noinline]
@@ -810,7 +811,7 @@ private string stubConstructor(Constructor c, Assembly assembly) {
810811
c.getNumberOfParameters() > 0
811812
then
812813
result =
813-
" " + stubModifiers(c) + c.getName() + "(" + stubParameters(c) + ")" +
814+
" " + stubModifiers(c) + escapeIfKeyword(c.getName()) + "(" + stubParameters(c) + ")" +
814815
stubConstructorInitializer(c) + " => throw null;\n"
815816
else result = " // Stub generator skipped constructor \n"
816817
}
@@ -844,7 +845,7 @@ private string stubEvent(Event e, Assembly assembly) {
844845
e.getALocation() = assembly and
845846
result =
846847
" " + stubModifiers(e) + "event " + stubClassName(e.getType()) + " " +
847-
stubExplicitImplementation(e) + e.getName() + stubEventAccessors(e) + "\n"
848+
stubExplicitImplementation(e) + escapeIfKeyword(e.getName()) + stubEventAccessors(e) + "\n"
848849
}
849850

850851
pragma[nomagic]

0 commit comments

Comments
 (0)