Skip to content

Commit e129f4b

Browse files
committed
Changed Name IntersectionWithDefaultDynamicReferenceType -> ReferenceTypeWithDefault
1 parent 92a7755 commit e129f4b

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

src/astUtils/reflection.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import type { ObjectType } from '../types/ObjectType';
2323
import type { AstNode, Expression, Statement } from '../parser/AstNode';
2424
import type { AssetFile } from '../files/AssetFile';
2525
import { AstNodeKind } from '../parser/AstNode';
26-
import type { TypePropertyReferenceType, ReferenceType, BinaryOperatorReferenceType, ArrayDefaultTypeReferenceType, AnyReferenceType, ParamTypeFromValueReferenceType, IntersectionWithDefaultDynamicReferenceType } from '../types/ReferenceType';
26+
import type { TypePropertyReferenceType, ReferenceType, BinaryOperatorReferenceType, ArrayDefaultTypeReferenceType, AnyReferenceType, ParamTypeFromValueReferenceType, ReferenceTypeWithDefault } from '../types/ReferenceType';
2727
import type { EnumMemberType, EnumType } from '../types/EnumType';
2828
import type { UnionType } from '../types/UnionType';
2929
import type { UninitializedType } from '../types/UninitializedType';
@@ -458,8 +458,8 @@ export function isArrayDefaultTypeReferenceType(value: any): value is ArrayDefau
458458
export function isParamTypeFromValueReferenceType(value: any): value is ParamTypeFromValueReferenceType {
459459
return value?.__reflection?.name === 'ParamTypeFromValueReferenceType';
460460
}
461-
export function isIntersectionWithDefaultDynamicReferenceType(value: any): value is IntersectionWithDefaultDynamicReferenceType {
462-
return value?.__reflection?.name === 'IntersectionWithDefaultDynamicReferenceType';
461+
export function isReferenceTypeWithDefault(value: any): value is ReferenceTypeWithDefault {
462+
return value?.__reflection?.name === 'ReferenceTypeWithDefault';
463463
}
464464
export function isNamespaceType(value: any): value is NamespaceType {
465465
return value?.kind === BscTypeKind.NamespaceType;
@@ -497,7 +497,7 @@ export function isCallableType(target): target is BaseFunctionType {
497497

498498
export function isAnyReferenceType(target): target is AnyReferenceType {
499499
const name = target?.__reflection?.name;
500-
return name === 'ReferenceType' || name === 'TypePropertyReferenceType' || name === 'BinaryOperatorReferenceType' || name === 'ArrayDefaultTypeReferenceType' || name === 'ParamTypeFromValueReferenceType' || name === 'IntersectionWithDefaultDynamicReferenceType';
500+
return name === 'ReferenceType' || name === 'TypePropertyReferenceType' || name === 'BinaryOperatorReferenceType' || name === 'ArrayDefaultTypeReferenceType' || name === 'ParamTypeFromValueReferenceType' || name === 'ReferenceTypeWithDefault';
501501
}
502502

503503
export function isNumberType(value: any): value is IntegerType | LongIntegerType | FloatType | DoubleType | InterfaceType {

src/parser/Parser.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3114,6 +3114,7 @@ export class Parser {
31143114
if (this.match(TokenKind.LeftCurlyBrace)) {
31153115
expr = this.inlineInterface();
31163116
} else if (this.match(TokenKind.LeftParen)) {
3117+
// this is a grouping type expression, ie. "(typeExpr)"
31173118
let left = this.previous();
31183119
let typeExpr = this.typeExpression();
31193120
let right = this.consume(

src/types/IntersectionType.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { GetTypeOptions, TypeCompatibilityData } from '../interfaces';
22
import { isDynamicType, isIntersectionType, isObjectType, isTypedFunctionType } from '../astUtils/reflection';
33
import { BscType } from './BscType';
4-
import { IntersectionWithDefaultDynamicReferenceType, ReferenceType } from './ReferenceType';
4+
import { ReferenceTypeWithDefault, ReferenceType } from './ReferenceType';
55
import { addAssociatedTypesTableAsSiblingToMemberTable, getAllTypesFromCompoundType, isEnumTypeCompatible, isTypeWithPotentialDefaultDynamicMember, joinTypesString, reduceTypesForIntersectionType } from './helpers';
66
import { BscTypeKind } from './BscTypeKind';
77
import type { TypeCacheEntry } from '../SymbolTable';
@@ -102,7 +102,7 @@ export class IntersectionType extends BscType {
102102
if (!innerTypesMemberType?.isResolvable()) {
103103
const shouldCreateDynamicAAMember = this.hasMemberTypeWithDefaultDynamicMember && !options.ignoreDefaultDynamicMembers;
104104
if (shouldCreateDynamicAAMember) {
105-
return new IntersectionWithDefaultDynamicReferenceType(innerTypesMemberType);
105+
return new ReferenceTypeWithDefault(innerTypesMemberType, DynamicType.instance);
106106
}
107107
}
108108
return innerTypesMemberType;
@@ -138,7 +138,7 @@ export class IntersectionType extends BscType {
138138
if (!resultCallFuncType?.isResolvable()) {
139139
const shouldCreateDynamicAAMember = this.hasMemberTypeWithDefaultDynamicMember && !options.ignoreDefaultDynamicMembers;
140140
if (shouldCreateDynamicAAMember) {
141-
return new IntersectionWithDefaultDynamicReferenceType(resultCallFuncType);
141+
return new ReferenceTypeWithDefault(resultCallFuncType, DynamicType.instance);
142142
}
143143
}
144144

src/types/ReferenceType.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,18 +646,18 @@ export class ParamTypeFromValueReferenceType extends BscType {
646646

647647
/**
648648
* Used when an IntersectionType has at least one member that may have default dynamic members.
649-
* If the inner type is not resolvable, this type will resolve to DynamicType.
649+
* If the inner type is not resolvable, this type will resolve to the given type DynamicType.
650650
*/
651-
export class IntersectionWithDefaultDynamicReferenceType extends BscType {
652-
constructor(public baseType: BscType) {
653-
super('IntersectionWithDefaultDynamicReferenceType');
651+
export class ReferenceTypeWithDefault extends BscType {
652+
constructor(public baseType: BscType, public defaultType: BscType) {
653+
super('ReferenceTypeWithDefault');
654654
// eslint-disable-next-line no-constructor-return
655655
return new Proxy(this, {
656656
get: (target, propName, receiver) => {
657657

658658
if (propName === '__reflection') {
659-
// Cheeky way to get `isIntersectionWithDefaultDynamicReferenceType` reflection to work
660-
return { name: 'IntersectionWithDefaultDynamicReferenceType' };
659+
// Cheeky way to get `isReferenceTypeWithDefault` reflection to work
660+
return { name: 'ReferenceTypeWithDefault' };
661661
}
662662

663663
if (propName === 'isResolvable') {
@@ -668,7 +668,7 @@ export class IntersectionWithDefaultDynamicReferenceType extends BscType {
668668
let innerType = this.getTarget();
669669

670670
if (!innerType) {
671-
innerType = DynamicType.instance;
671+
innerType = this.defaultType;
672672
}
673673

674674
if (innerType) {

0 commit comments

Comments
 (0)