diff --git a/.github/workflows/ql-for-ql-build.yml b/.github/workflows/ql-for-ql-build.yml index e8ac1fa0f173..422633ece07c 100644 --- a/.github/workflows/ql-for-ql-build.yml +++ b/.github/workflows/ql-for-ql-build.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 0 - name: Find codeql id: find-codeql - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: javascript # does not matter - uses: ./.github/actions/os-version @@ -65,7 +65,7 @@ jobs: exclude:*/ql/lib/upgrades/ exclude:java/ql/integration-tests - name: Upload sarif to code-scanning - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: ql-for-ql.sarif category: ql-for-ql diff --git a/.github/workflows/ql-for-ql-dataset_measure.yml b/.github/workflows/ql-for-ql-dataset_measure.yml index d317d467c9aa..ff46c242de44 100644 --- a/.github/workflows/ql-for-ql-dataset_measure.yml +++ b/.github/workflows/ql-for-ql-dataset_measure.yml @@ -25,7 +25,7 @@ jobs: - name: Find codeql id: find-codeql - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: javascript # does not matter - uses: ./.github/actions/os-version diff --git a/.github/workflows/ql-for-ql-tests.yml b/.github/workflows/ql-for-ql-tests.yml index 4385e3f76bb1..12461d1df67f 100644 --- a/.github/workflows/ql-for-ql-tests.yml +++ b/.github/workflows/ql-for-ql-tests.yml @@ -24,7 +24,7 @@ jobs: - uses: actions/checkout@v4 - name: Find codeql id: find-codeql - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: javascript # does not matter - uses: ./.github/actions/os-version @@ -69,7 +69,7 @@ jobs: echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH - name: Find codeql id: find-codeql - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: javascript # does not matter - uses: ./.github/actions/os-version diff --git a/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs b/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs index 57a1c823fc12..983175f4c17a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.StubGenerator/StubVisitor.cs @@ -534,6 +534,9 @@ private void StubParameters(ICollection parameters) case RefKind.In: stubWriter.Write("in "); break; + case RefKind.RefReadOnlyParameter: + stubWriter.Write("ref readonly "); + break; default: stubWriter.Write($"/* TODO: {parameter.RefKind} */"); break; @@ -884,4 +887,4 @@ public override void VisitProperty(IPropertySymbol symbol) if (explicitInterfaceImplementations.Length == 0) StubProperty(symbol, null); } -} \ No newline at end of file +} diff --git a/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs b/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs index 598ff77ca25b..ea60c60bad61 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/StubGenerator.cs @@ -42,7 +42,7 @@ public void StubGeneratorMethodTest() // Setup const string source = @" public class MyTest { - public int M1(string arg1) { return 0;} + public int M1(string arg1) { return 0; } }"; // Execute @@ -56,6 +56,26 @@ public class MyTest { Assert.Equal(expected, stub); } + [Fact] + public void StubGeneratorRefReadonlyParameterTest() + { + // Setup + const string source = @" +public class MyTest { + public int M1(ref readonly Guid guid) { return 0; } +}"; + + // Execute + var stub = GenerateStub(source); + + // Verify + const string expected = @"public class MyTest { +public int M1(ref readonly Guid guid) => throw null; +} +"; + Assert.Equal(expected, stub); + } + private static string GenerateStub(string source) { var st = CSharpSyntaxTree.ParseText(source);