mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
C#: Use modifier to decide, if a type is a record like type and implement support for record struct types.
This commit is contained in:
@@ -61,7 +61,7 @@ class Class extends ValueOrRefType {
|
||||
}
|
||||
|
||||
/** A `record`. */
|
||||
class Record extends Class {
|
||||
deprecated class Record extends Class {
|
||||
Record() { this.isRecord() }
|
||||
}
|
||||
|
||||
|
||||
@@ -372,6 +372,8 @@ class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_
|
||||
nested_types(this, _, result)
|
||||
}
|
||||
|
||||
override predicate isRecord() { this.hasModifier("record") }
|
||||
|
||||
override string toString() { result = Type.super.toString() }
|
||||
}
|
||||
|
||||
@@ -711,6 +713,20 @@ class Struct extends ValueType, @struct_type {
|
||||
override string getAPrimaryQlClass() { result = "Struct" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `record struct`, for example
|
||||
* ```csharp
|
||||
* record struct RS {
|
||||
* ...
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
class RecordStruct extends Struct {
|
||||
RecordStruct() { this.isRecord() }
|
||||
|
||||
override string getAPrimaryQlClass() { result = "RecordStruct" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A reference type.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user