@@ -773,26 +773,9 @@ export function compileCall(
773
773
}
774
774
}
775
775
case BuiltinSymbols . nameof : {
776
+ let value : string | null = null ;
777
+ let resultType : Type | null = evaluateConstantType ( compiler , typeArguments , operands , reportNode ) ;
776
778
compiler . currentType = compiler . program . stringInstance . type ;
777
-
778
- if ( checkTypeOptional ( typeArguments , reportNode , compiler )
779
- | checkArgsOptional ( operands , 0 , 1 , reportNode , compiler ) ) {
780
- compiler . error (
781
- DiagnosticCode . Operation_not_supported ,
782
- reportNode . typeArgumentsRange
783
- ) ;
784
- return module . unreachable ( ) ;
785
- }
786
-
787
- let expression = new StringLiteralExpression ( ) ;
788
- let resultType : Type | null = null ;
789
-
790
- if ( typeArguments !== null && typeArguments . length > 0 ) {
791
- resultType = typeArguments [ 0 ] ;
792
- } else {
793
- resultType = evaluateConstantType ( compiler , typeArguments , operands , reportNode ) ;
794
- }
795
-
796
779
if ( resultType === null ) {
797
780
compiler . error (
798
781
DiagnosticCode . Operation_not_supported ,
@@ -802,31 +785,30 @@ export function compileCall(
802
785
}
803
786
804
787
if ( resultType . classReference !== null ) {
805
- expression . value = resultType . classReference . name ;
788
+ value = resultType . classReference . name ;
806
789
} else if ( resultType . signatureReference !== null ) {
807
- expression . value = "Function" ;
790
+ value = "Function" ;
808
791
} else {
809
- let kind = resultType . kind ;
810
- switch ( kind ) {
811
- case TypeKind . BOOL : expression . value = "bool" ; break ;
812
- case TypeKind . I8 : expression . value = "i8" ; break ;
813
- case TypeKind . U8 : expression . value = "u8" ; break ;
814
- case TypeKind . I16 : expression . value = "i16" ; break ;
815
- case TypeKind . U16 : expression . value = "u16" ; break ;
816
- case TypeKind . I32 : expression . value = "i32" ; break ;
817
- case TypeKind . U32 : expression . value = "u32" ; break ;
818
- case TypeKind . F32 : expression . value = "f32" ; break ;
819
- case TypeKind . I64 : expression . value = "i64" ; break ;
820
- case TypeKind . U64 : expression . value = "u64" ; break ;
821
- case TypeKind . F64 : expression . value = "f64" ; break ;
822
- case TypeKind . ISIZE : expression . value = "isize" ; break ;
823
- case TypeKind . USIZE : expression . value = "usize" ; break ;
824
- case TypeKind . VOID : expression . value = "void" ; break ;
825
- default : expression . value = "unknown" ; break ;
792
+ switch ( resultType . kind ) {
793
+ case TypeKind . BOOL : value = "bool" ; break ;
794
+ case TypeKind . I8 : value = "i8" ; break ;
795
+ case TypeKind . U8 : value = "u8" ; break ;
796
+ case TypeKind . I16 : value = "i16" ; break ;
797
+ case TypeKind . U16 : value = "u16" ; break ;
798
+ case TypeKind . I32 : value = "i32" ; break ;
799
+ case TypeKind . U32 : value = "u32" ; break ;
800
+ case TypeKind . F32 : value = "f32" ; break ;
801
+ case TypeKind . I64 : value = "i64" ; break ;
802
+ case TypeKind . U64 : value = "u64" ; break ;
803
+ case TypeKind . F64 : value = "f64" ; break ;
804
+ case TypeKind . ISIZE : value = "isize" ; break ;
805
+ case TypeKind . USIZE : value = "usize" ; break ;
806
+ case TypeKind . VOID : value = "void" ; break ;
807
+ default : value = "unknown" ; break ;
826
808
}
827
809
}
828
810
829
- return compiler . compileStringLiteral ( expression ) ;
811
+ return compiler . ensureStaticString ( value ) ;
830
812
}
831
813
832
814
// === Math ===================================================================================
0 commit comments