@@ -372,6 +372,8 @@ class ValueOrRefType extends DotNet::ValueOrRefType, Type, Attributable, @value_
372372 nested_types ( this , _, result )
373373 }
374374
375+ override predicate isRecord ( ) { this .hasModifier ( "record" ) }
376+
375377 override string toString ( ) { result = Type .super .toString ( ) }
376378}
377379
@@ -449,6 +451,14 @@ class SimpleType extends ValueType, @simple_type {
449451 override SystemNamespace getDeclaringNamespace ( ) { any ( ) }
450452}
451453
454+ /**
455+ * A `record` like type.
456+ * This can be either a `class` or a `struct`.
457+ */
458+ class RecordType extends ValueOrRefType {
459+ RecordType ( ) { this .isRecord ( ) }
460+ }
461+
452462/**
453463 * The Boolean type, `bool`.
454464 */
@@ -711,6 +721,18 @@ class Struct extends ValueType, @struct_type {
711721 override string getAPrimaryQlClass ( ) { result = "Struct" }
712722}
713723
724+ /**
725+ * A `record struct`, for example
726+ * ```csharp
727+ * record struct RS {
728+ * ...
729+ * }
730+ * ```
731+ */
732+ class RecordStruct extends RecordType , Struct {
733+ override string getAPrimaryQlClass ( ) { result = "RecordStruct" }
734+ }
735+
714736/**
715737 * A reference type.
716738 *
@@ -765,6 +787,16 @@ class Class extends RefType, @class_type {
765787 override string getAPrimaryQlClass ( ) { result = "Class" }
766788}
767789
790+ /**
791+ * DEPRECATED: Use `RecordClass` instead.
792+ */
793+ deprecated class Record extends Class {
794+ Record ( ) { this .isRecord ( ) }
795+
796+ /** Gets the clone method of this record. */
797+ RecordCloneMethod getCloneMethod ( ) { result = this .getAMember ( ) }
798+ }
799+
768800/**
769801 * A `record`, for example
770802 *
@@ -774,13 +806,11 @@ class Class extends RefType, @class_type {
774806 * }
775807 * ```
776808 */
777- class Record extends Class {
778- Record ( ) { this .isRecord ( ) }
779-
809+ class RecordClass extends RecordType , Class {
780810 /** Gets the clone method of this record. */
781811 RecordCloneMethod getCloneMethod ( ) { result = this .getAMember ( ) }
782812
783- override string getAPrimaryQlClass ( ) { result = "Record " }
813+ override string getAPrimaryQlClass ( ) { result = "RecordClass " }
784814}
785815
786816/**
0 commit comments