Merge pull request #20996 from michaelnebel/csharp/updateroslyn

C#: Update Roslyn, MsBuild and Binlog extractor dependencies.
This commit is contained in:
Michael Nebel
2025-12-11 13:50:22 +01:00
committed by GitHub
14 changed files with 80 additions and 92 deletions

View File

@@ -6,7 +6,7 @@
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "dotnet: build", "preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Standalone/bin/Debug/net9.0/Semmle.Extraction.CSharp.Standalone.dll", "program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Standalone/bin/Debug/net10.0/Semmle.Extraction.CSharp.Standalone.dll",
"args": [], "args": [],
// Set the path to the folder that should be extracted: // Set the path to the folder that should be extracted:
"cwd": "${workspaceFolder}/ql/test/library-tests/standalone/standalonemode", "cwd": "${workspaceFolder}/ql/test/library-tests/standalone/standalonemode",
@@ -35,7 +35,7 @@
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "dotnet: build", "preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/autobuilder/Semmle.Autobuild.CSharp/bin/Debug/net9.0/Semmle.Autobuild.CSharp.dll", "program": "${workspaceFolder}/autobuilder/Semmle.Autobuild.CSharp/bin/Debug/net10.0/Semmle.Autobuild.CSharp.dll",
// Set the path to the folder that should be extracted: // Set the path to the folder that should be extracted:
"cwd": "${workspaceFolder}/ql/integration-tests/all-platforms/autobuild", "cwd": "${workspaceFolder}/ql/integration-tests/all-platforms/autobuild",
"stopAtEntry": true, "stopAtEntry": true,
@@ -53,7 +53,7 @@
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "dotnet: build", "preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net9.0/Semmle.Extraction.CSharp.Driver.dll", "program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net10.0/Semmle.Extraction.CSharp.Driver.dll",
"stopAtEntry": true, "stopAtEntry": true,
"args": [ "args": [
"--binlog", "--binlog",
@@ -66,7 +66,7 @@
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "dotnet: build", "preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net9.0/Semmle.Extraction.CSharp.Driver.dll", "program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net10.0/Semmle.Extraction.CSharp.Driver.dll",
// Set the path to the folder that should be extracted: // Set the path to the folder that should be extracted:
"cwd": "${workspaceFolder}/ql/test/library-tests/dataflow/local", "cwd": "${workspaceFolder}/ql/test/library-tests/dataflow/local",
"args": [ "args": [

View File

@@ -4,7 +4,7 @@ source https://api.nuget.org/v3/index.json
# behave like nuget in choosing transitive dependency versions # behave like nuget in choosing transitive dependency versions
strategy: max strategy: max
nuget Basic.CompilerLog.Util 0.9.21 nuget Basic.CompilerLog.Util 0.9.25
nuget Mono.Posix.NETStandard nuget Mono.Posix.NETStandard
nuget Newtonsoft.Json nuget Newtonsoft.Json
nuget NuGet.Versioning nuget NuGet.Versioning
@@ -12,6 +12,6 @@ nuget xunit
nuget xunit.runner.visualstudio nuget xunit.runner.visualstudio
nuget xunit.runner.utility nuget xunit.runner.utility
nuget Microsoft.NET.Test.Sdk nuget Microsoft.NET.Test.Sdk
nuget Microsoft.CodeAnalysis.CSharp 4.14.0 nuget Microsoft.CodeAnalysis.CSharp 5.0.0
nuget Microsoft.CodeAnalysis 4.14.0 nuget Microsoft.CodeAnalysis 5.0.0
nuget Microsoft.Build 17.14.28 nuget Microsoft.Build 18.0.2

79
csharp/paket.lock generated
View File

@@ -3,7 +3,7 @@ STRATEGY: MAX
RESTRICTION: == net10.0 RESTRICTION: == net10.0
NUGET NUGET
remote: https://api.nuget.org/v3/index.json remote: https://api.nuget.org/v3/index.json
Basic.CompilerLog.Util (0.9.21) Basic.CompilerLog.Util (0.9.25)
MessagePack (>= 3.1.4) MessagePack (>= 3.1.4)
Microsoft.Bcl.Memory (>= 9.0.10) Microsoft.Bcl.Memory (>= 9.0.10)
Microsoft.CodeAnalysis (>= 4.8) Microsoft.CodeAnalysis (>= 4.8)
@@ -12,6 +12,7 @@ NUGET
Microsoft.Extensions.ObjectPool (>= 9.0.10) Microsoft.Extensions.ObjectPool (>= 9.0.10)
MSBuild.StructuredLogger (>= 2.3.71) MSBuild.StructuredLogger (>= 2.3.71)
NaturalSort.Extension (>= 4.4) NaturalSort.Extension (>= 4.4)
NuGet.Versioning (>= 6.14)
Humanizer.Core (3.0.1) Humanizer.Core (3.0.1)
MessagePack (3.1.4) MessagePack (3.1.4)
MessagePack.Annotations (>= 3.1.4) MessagePack.Annotations (>= 3.1.4)
@@ -21,13 +22,13 @@ NUGET
MessagePackAnalyzer (3.1.4) MessagePackAnalyzer (3.1.4)
Microsoft.Bcl.AsyncInterfaces (10.0) Microsoft.Bcl.AsyncInterfaces (10.0)
Microsoft.Bcl.Memory (10.0) Microsoft.Bcl.Memory (10.0)
Microsoft.Build (17.14.28) Microsoft.Build (18.0.2)
Microsoft.Build.Framework (>= 17.14.28) Microsoft.Build.Framework (>= 18.0.2)
Microsoft.NET.StringTools (>= 17.14.28) Microsoft.NET.StringTools (>= 18.0.2)
System.Configuration.ConfigurationManager (>= 9.0) System.Configuration.ConfigurationManager (>= 9.0)
System.Diagnostics.EventLog (>= 9.0) System.Diagnostics.EventLog (>= 9.0)
System.Reflection.MetadataLoadContext (>= 9.0) System.Reflection.MetadataLoadContext (>= 9.0)
System.Security.Cryptography.ProtectedData (>= 9.0) System.Security.Cryptography.ProtectedData (>= 9.0.6)
Microsoft.Build.Framework (18.0.2) Microsoft.Build.Framework (18.0.2)
Microsoft.Build.Utilities.Core (18.0.2) Microsoft.Build.Utilities.Core (18.0.2)
Microsoft.Build.Framework (>= 18.0.2) Microsoft.Build.Framework (>= 18.0.2)
@@ -35,69 +36,51 @@ NUGET
System.Configuration.ConfigurationManager (>= 9.0) System.Configuration.ConfigurationManager (>= 9.0)
System.Diagnostics.EventLog (>= 9.0) System.Diagnostics.EventLog (>= 9.0)
System.Security.Cryptography.ProtectedData (>= 9.0.6) System.Security.Cryptography.ProtectedData (>= 9.0.6)
Microsoft.CodeAnalysis (4.14) Microsoft.CodeAnalysis (5.0)
Humanizer.Core (>= 2.14.1) Humanizer.Core (>= 2.14.1)
Microsoft.Bcl.AsyncInterfaces (>= 9.0) Microsoft.Bcl.AsyncInterfaces (>= 9.0)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) Microsoft.CodeAnalysis.CSharp.Workspaces (5.0)
Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.0)
System.Buffers (>= 4.5.1) System.Buffers (>= 4.6)
System.Collections.Immutable (>= 9.0) System.Collections.Immutable (>= 9.0)
System.Composition (>= 9.0) System.Composition (>= 9.0)
System.IO.Pipelines (>= 9.0) System.IO.Pipelines (>= 9.0)
System.Memory (>= 4.5.5) System.Memory (>= 4.6)
System.Numerics.Vectors (>= 4.5) System.Numerics.Vectors (>= 4.6)
System.Reflection.Metadata (>= 9.0) System.Reflection.Metadata (>= 9.0)
System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Runtime.CompilerServices.Unsafe (>= 6.1)
System.Text.Encoding.CodePages (>= 7.0) System.Text.Encoding.CodePages (>= 8.0)
System.Threading.Channels (>= 7.0) System.Threading.Channels (>= 8.0)
System.Threading.Tasks.Extensions (>= 4.5.4) System.Threading.Tasks.Extensions (>= 4.6)
Microsoft.CodeAnalysis.Analyzers (3.11) Microsoft.CodeAnalysis.Analyzers (3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
System.Collections.Immutable (>= 9.0) Microsoft.CodeAnalysis.CSharp (5.0)
System.Reflection.Metadata (>= 9.0)
Microsoft.CodeAnalysis.CSharp (4.14)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
System.Collections.Immutable (>= 9.0) Microsoft.CodeAnalysis.CSharp.Workspaces (5.0)
System.Reflection.Metadata (>= 9.0)
Microsoft.CodeAnalysis.CSharp.Workspaces (4.14)
Humanizer.Core (>= 2.14.1) Humanizer.Core (>= 2.14.1)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
Microsoft.CodeAnalysis.CSharp (4.14) Microsoft.CodeAnalysis.CSharp (5.0)
Microsoft.CodeAnalysis.Workspaces.Common (4.14) Microsoft.CodeAnalysis.Workspaces.Common (5.0)
System.Collections.Immutable (>= 9.0)
System.Composition (>= 9.0) System.Composition (>= 9.0)
System.IO.Pipelines (>= 9.0) Microsoft.CodeAnalysis.VisualBasic (5.0)
System.Reflection.Metadata (>= 9.0)
System.Threading.Channels (>= 7.0)
Microsoft.CodeAnalysis.VisualBasic (4.14)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
System.Collections.Immutable (>= 9.0) Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.0)
System.Reflection.Metadata (>= 9.0)
Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14)
Humanizer.Core (>= 2.14.1) Humanizer.Core (>= 2.14.1)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
Microsoft.CodeAnalysis.VisualBasic (4.14) Microsoft.CodeAnalysis.VisualBasic (5.0)
Microsoft.CodeAnalysis.Workspaces.Common (4.14) Microsoft.CodeAnalysis.Workspaces.Common (5.0)
System.Collections.Immutable (>= 9.0)
System.Composition (>= 9.0) System.Composition (>= 9.0)
System.IO.Pipelines (>= 9.0) Microsoft.CodeAnalysis.Workspaces.Common (5.0)
System.Reflection.Metadata (>= 9.0)
System.Threading.Channels (>= 7.0)
Microsoft.CodeAnalysis.Workspaces.Common (4.14)
Humanizer.Core (>= 2.14.1) Humanizer.Core (>= 2.14.1)
Microsoft.CodeAnalysis.Analyzers (>= 3.11) Microsoft.CodeAnalysis.Analyzers (>= 3.11)
Microsoft.CodeAnalysis.Common (4.14) Microsoft.CodeAnalysis.Common (5.0)
System.Collections.Immutable (>= 9.0)
System.Composition (>= 9.0) System.Composition (>= 9.0)
System.IO.Pipelines (>= 9.0)
System.Reflection.Metadata (>= 9.0)
System.Threading.Channels (>= 7.0)
Microsoft.CodeCoverage (18.0.1) Microsoft.CodeCoverage (18.0.1)
Microsoft.Extensions.ObjectPool (10.0) Microsoft.Extensions.ObjectPool (10.0)
Microsoft.NET.StringTools (18.0.2) Microsoft.NET.StringTools (18.0.2)

18
csharp/paket.main.bzl generated

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and `build mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis.

View File

@@ -3,6 +3,7 @@
*/ */
import csharp import csharp
private import semmle.code.csharp.commons.Collections
private import semmle.code.csharp.frameworks.Format private import semmle.code.csharp.frameworks.Format
private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.System
private import semmle.code.csharp.frameworks.system.Text private import semmle.code.csharp.frameworks.system.Text
@@ -33,7 +34,7 @@ class ImplicitToStringExpr extends Expr {
or or
p instanceof StringFormatItemParameter and p instanceof StringFormatItemParameter and
not p.getType() = not p.getType() =
any(ArrayType at | any(ParamsCollectionType at |
at.getElementType() instanceof ObjectType and at.getElementType() instanceof ObjectType and
this.getType().isImplicitlyConvertibleTo(at) this.getType().isImplicitlyConvertibleTo(at)
) )

View File

@@ -75,8 +75,8 @@ csharp73.cs:
# 22| -1: [TypeMention] Span<int> # 22| -1: [TypeMention] Span<int>
# 22| 1: [TypeMention] int # 22| 1: [TypeMention] int
# 22| 0: [LocalVariableAccess] access to local variable t # 22| 0: [LocalVariableAccess] access to local variable t
# 22| 1: [OperatorCall] call to operator implicit conversion # 22| 1: [CastExpr] (...) ...
# 22| 0: [ArrayCreation] array creation of type Int32[] # 22| 1: [ArrayCreation] array creation of type Int32[]
# 22| -1: [TypeMention] Int32[] # 22| -1: [TypeMention] Int32[]
# 22| 1: [TypeMention] int # 22| 1: [TypeMention] int
# 22| 0: [IntLiteral] 10 # 22| 0: [IntLiteral] 10

View File

@@ -11,13 +11,13 @@ class Literals
class ExpressionBodiedMembers class ExpressionBodiedMembers
{ {
int field = 0; int @field = 0;
int Foo() => field; int Foo() => @field;
int P => 5; int P => 5;
int Q int Q
{ {
get => Foo(); get => Foo();
set => field = value; set => @field = value;
} }
ExpressionBodiedMembers() : this(1) { } ExpressionBodiedMembers() : this(1) { }
ExpressionBodiedMembers(int x) => Foo(); ExpressionBodiedMembers(int x) => Foo();

View File

@@ -1,4 +1,4 @@
| CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:24:20:28 | access to parameter value | | CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:25:20:29 | access to parameter value |
| CSharp7.cs:29:19:29:19 | i | CSharp7.cs:31:16:31:16 | access to parameter i | | CSharp7.cs:29:19:29:19 | i | CSharp7.cs:31:16:31:16 | access to parameter i |
| CSharp7.cs:29:19:29:19 | i | CSharp7.cs:31:24:31:24 | access to parameter i | | CSharp7.cs:29:19:29:19 | i | CSharp7.cs:31:24:31:24 | access to parameter i |
| CSharp7.cs:42:19:42:19 | x | CSharp7.cs:44:13:44:13 | access to parameter x | | CSharp7.cs:42:19:42:19 | x | CSharp7.cs:44:13:44:13 | access to parameter x |

View File

@@ -1,7 +1,7 @@
| CSharp7.cs:15:9:15:11 | Foo | CSharp7.cs:15:18:15:22 | access to field field | | CSharp7.cs:15:9:15:11 | Foo | CSharp7.cs:15:18:15:23 | access to field field |
| CSharp7.cs:16:14:16:14 | get_P | CSharp7.cs:16:14:16:14 | 5 | | CSharp7.cs:16:14:16:14 | get_P | CSharp7.cs:16:14:16:14 | 5 |
| CSharp7.cs:19:9:19:11 | get_Q | CSharp7.cs:19:16:19:20 | call to method Foo | | CSharp7.cs:19:9:19:11 | get_Q | CSharp7.cs:19:16:19:20 | call to method Foo |
| CSharp7.cs:20:9:20:11 | set_Q | CSharp7.cs:20:16:20:28 | ... = ... | | CSharp7.cs:20:9:20:11 | set_Q | CSharp7.cs:20:16:20:29 | ... = ... |
| CSharp7.cs:23:5:23:27 | ExpressionBodiedMembers | CSharp7.cs:23:39:23:43 | call to method Foo | | CSharp7.cs:23:5:23:27 | ExpressionBodiedMembers | CSharp7.cs:23:39:23:43 | call to method Foo |
| CSharp7.cs:24:6:24:28 | ~ExpressionBodiedMembers | CSharp7.cs:24:35:24:39 | call to method Foo | | CSharp7.cs:24:6:24:28 | ~ExpressionBodiedMembers | CSharp7.cs:24:35:24:39 | call to method Foo |
| CSharp7.cs:135:9:135:22 | f3 | CSharp7.cs:135:21:135:21 | 2 | | CSharp7.cs:135:9:135:22 | f3 | CSharp7.cs:135:21:135:21 | 2 |

View File

@@ -7,15 +7,15 @@
| CSharp7.cs:8:9:8:9 | this access | CSharp7.cs:9:9:9:9 | this access | | CSharp7.cs:8:9:8:9 | this access | CSharp7.cs:9:9:9:9 | this access |
| CSharp7.cs:8:13:8:19 | 123456 | CSharp7.cs:8:9:8:9 | access to field y | | CSharp7.cs:8:13:8:19 | 123456 | CSharp7.cs:8:9:8:9 | access to field y |
| CSharp7.cs:9:13:9:23 | 128 | CSharp7.cs:9:9:9:9 | access to field z | | CSharp7.cs:9:13:9:23 | 128 | CSharp7.cs:9:9:9:9 | access to field z |
| CSharp7.cs:12:7:12:29 | this | CSharp7.cs:14:9:14:13 | this access | | CSharp7.cs:12:7:12:29 | this | CSharp7.cs:14:9:14:14 | this access |
| CSharp7.cs:14:17:14:17 | 0 | CSharp7.cs:14:9:14:13 | access to field field | | CSharp7.cs:14:18:14:18 | 0 | CSharp7.cs:14:9:14:14 | access to field field |
| CSharp7.cs:15:9:15:11 | SSA entry def(this.field) | CSharp7.cs:15:18:15:22 | access to field field | | CSharp7.cs:15:9:15:11 | SSA entry def(this.field) | CSharp7.cs:15:18:15:23 | access to field field |
| CSharp7.cs:15:9:15:11 | this | CSharp7.cs:15:18:15:22 | this access | | CSharp7.cs:15:9:15:11 | this | CSharp7.cs:15:18:15:23 | this access |
| CSharp7.cs:19:9:19:11 | this | CSharp7.cs:19:16:19:20 | this access | | CSharp7.cs:19:9:19:11 | this | CSharp7.cs:19:16:19:20 | this access |
| CSharp7.cs:20:9:20:11 | SSA param(value) | CSharp7.cs:20:24:20:28 | access to parameter value | | CSharp7.cs:20:9:20:11 | SSA param(value) | CSharp7.cs:20:25:20:29 | access to parameter value |
| CSharp7.cs:20:9:20:11 | this | CSharp7.cs:20:16:20:20 | this access | | CSharp7.cs:20:9:20:11 | this | CSharp7.cs:20:16:20:21 | this access |
| CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:9:20:11 | SSA param(value) | | CSharp7.cs:20:9:20:11 | value | CSharp7.cs:20:9:20:11 | SSA param(value) |
| CSharp7.cs:20:24:20:28 | access to parameter value | CSharp7.cs:20:16:20:20 | access to field field | | CSharp7.cs:20:25:20:29 | access to parameter value | CSharp7.cs:20:16:20:21 | access to field field |
| CSharp7.cs:23:5:23:27 | [post] this access | CSharp7.cs:23:39:23:43 | this access | | CSharp7.cs:23:5:23:27 | [post] this access | CSharp7.cs:23:39:23:43 | this access |
| CSharp7.cs:23:5:23:27 | this | CSharp7.cs:23:5:23:27 | this access | | CSharp7.cs:23:5:23:27 | this | CSharp7.cs:23:5:23:27 | this access |
| CSharp7.cs:23:5:23:27 | this access | CSharp7.cs:23:39:23:43 | this access | | CSharp7.cs:23:5:23:27 | this access | CSharp7.cs:23:39:23:43 | this access |

View File

@@ -507,11 +507,11 @@
| LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... |
| LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 |
| LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... |
| LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:363:29:363:32 | access to parameter args | | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:364:27:364:30 | access to parameter args |
| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | | LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) |
| LocalDataFlow.cs:363:29:363:32 | [post] access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:361:56:361:57 | SSA param(dt) | LocalDataFlow.cs:363:30:363:31 | access to parameter dt |
| LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:361:56:361:57 | dt | LocalDataFlow.cs:361:56:361:57 | SSA param(dt) |
| LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | LocalDataFlow.cs:363:22:363:25 | access to local variable span | | LocalDataFlow.cs:363:30:363:31 | call to operator implicit conversion | LocalDataFlow.cs:363:24:363:26 | access to local variable dto |
| LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x | | LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x |
| LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 |
| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | | LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) |

View File

@@ -358,9 +358,9 @@ public class LocalDataFlow
public static implicit operator LocalDataFlow(string[] args) => null; public static implicit operator LocalDataFlow(string[] args) => null;
public void ConversionFlow(string[] args) public void ConversionFlow(string[] args, DateTime dt)
{ {
Span<object> span = args; // flow (library operator) DateTimeOffset dto = dt; // flow (library operator)
LocalDataFlow x = args; // no flow (source code operator) LocalDataFlow x = args; // no flow (source code operator)
} }

View File

@@ -618,12 +618,12 @@
| LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... | | LocalDataFlow.cs:353:21:353:21 | access to parameter x | LocalDataFlow.cs:353:16:353:21 | ... = ... |
| LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:29 | access to local variable os2 |
| LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... | | LocalDataFlow.cs:356:33:356:34 | access to parameter os | LocalDataFlow.cs:356:27:356:34 | ... = ... |
| LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:363:29:363:32 | access to parameter args | | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | LocalDataFlow.cs:364:27:364:30 | access to parameter args |
| LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) | | LocalDataFlow.cs:361:41:361:44 | args | LocalDataFlow.cs:361:41:361:44 | SSA param(args) |
| LocalDataFlow.cs:363:29:363:32 | [post] access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:361:56:361:57 | SSA param(dt) | LocalDataFlow.cs:363:30:363:31 | access to parameter dt |
| LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | | LocalDataFlow.cs:361:56:361:57 | dt | LocalDataFlow.cs:361:56:361:57 | SSA param(dt) |
| LocalDataFlow.cs:363:29:363:32 | access to parameter args | LocalDataFlow.cs:364:27:364:30 | access to parameter args | | LocalDataFlow.cs:363:30:363:31 | access to parameter dt | LocalDataFlow.cs:363:30:363:31 | call to operator implicit conversion |
| LocalDataFlow.cs:363:29:363:32 | call to operator implicit conversion | LocalDataFlow.cs:363:22:363:25 | access to local variable span | | LocalDataFlow.cs:363:30:363:31 | call to operator implicit conversion | LocalDataFlow.cs:363:24:363:26 | access to local variable dto |
| LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x | | LocalDataFlow.cs:364:27:364:30 | call to operator implicit conversion | LocalDataFlow.cs:364:23:364:23 | access to local variable x |
| LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 | | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | LocalDataFlow.cs:371:13:371:14 | access to parameter b1 |
| LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) | | LocalDataFlow.cs:367:23:367:24 | b1 | LocalDataFlow.cs:367:23:367:24 | SSA param(b1) |