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:
Michael Nebel
2022-01-14 16:45:27 +01:00
parent dc76775d07
commit 55cb2aa160
2 changed files with 17 additions and 1 deletions

View File

@@ -61,7 +61,7 @@ class Class extends ValueOrRefType {
}
/** A `record`. */
class Record extends Class {
deprecated class Record extends Class {
Record() { this.isRecord() }
}

View File

@@ -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.
*