@@ -1799,27 +1799,37 @@ module ts {
1799
1799
1800
1800
function resolveAnonymousTypeMembers ( type : ObjectType ) {
1801
1801
var symbol = type . symbol ;
1802
- var members = emptySymbols ;
1803
- var callSignatures = emptyArray ;
1804
- var constructSignatures = emptyArray ;
1805
- if ( symbol . flags & SymbolFlags . HasExports ) {
1806
- members = symbol . exports ;
1807
- }
1808
- if ( symbol . flags & ( SymbolFlags . Function | SymbolFlags . Method ) ) {
1809
- callSignatures = getSignaturesOfSymbol ( symbol ) ;
1802
+ if ( symbol . flags & SymbolFlags . TypeLiteral ) {
1803
+ // Type literal
1804
+ var members = symbol . members ;
1805
+ var callSignatures = getSignaturesOfSymbol ( members [ "__call" ] ) ;
1806
+ var constructSignatures = getSignaturesOfSymbol ( members [ "__new" ] ) ;
1807
+ var stringIndexType = getIndexTypeOfSymbol ( symbol , IndexKind . String ) ;
1808
+ var numberIndexType = getIndexTypeOfSymbol ( symbol , IndexKind . Number ) ;
1810
1809
}
1811
- if ( symbol . flags & SymbolFlags . Class ) {
1812
- var classType = getDeclaredTypeOfClass ( symbol ) ;
1813
- constructSignatures = getSignaturesOfSymbol ( symbol . members [ "__constructor" ] ) ;
1814
- if ( ! constructSignatures . length ) constructSignatures = getDefaultConstructSignatures ( classType ) ;
1815
- if ( classType . baseTypes . length ) {
1816
- var members = createSymbolTable ( getNamedMembers ( members ) ) ;
1817
- addInheritedMembers ( members , getPropertiesOfType ( getTypeOfSymbol ( classType . baseTypes [ 0 ] . symbol ) ) ) ;
1810
+ else {
1811
+ // Combinations of function, class, enum and module
1812
+ var members = emptySymbols ;
1813
+ var callSignatures = < Signature [ ] > emptyArray ;
1814
+ var constructSignatures = < Signature [ ] > emptyArray ;
1815
+ if ( symbol . flags & SymbolFlags . HasExports ) {
1816
+ members = symbol . exports ;
1817
+ }
1818
+ if ( symbol . flags & ( SymbolFlags . Function | SymbolFlags . Method ) ) {
1819
+ callSignatures = getSignaturesOfSymbol ( symbol ) ;
1818
1820
}
1821
+ if ( symbol . flags & SymbolFlags . Class ) {
1822
+ var classType = getDeclaredTypeOfClass ( symbol ) ;
1823
+ constructSignatures = getSignaturesOfSymbol ( symbol . members [ "__constructor" ] ) ;
1824
+ if ( ! constructSignatures . length ) constructSignatures = getDefaultConstructSignatures ( classType ) ;
1825
+ if ( classType . baseTypes . length ) {
1826
+ var members = createSymbolTable ( getNamedMembers ( members ) ) ;
1827
+ addInheritedMembers ( members , getPropertiesOfType ( getTypeOfSymbol ( classType . baseTypes [ 0 ] . symbol ) ) ) ;
1828
+ }
1829
+ }
1830
+ var numberIndexType = ( symbol . flags & SymbolFlags . Enum ) ? < Type > stringType : undefined ;
1819
1831
}
1820
- var numberIndexType = ( symbol . flags & SymbolFlags . Enum ) ? stringType : undefined ;
1821
-
1822
- setObjectTypeMembers ( type , members , callSignatures , constructSignatures , /* stringIndexType */ undefined , numberIndexType ) ;
1832
+ setObjectTypeMembers ( type , members , callSignatures , constructSignatures , stringIndexType , numberIndexType ) ;
1823
1833
}
1824
1834
1825
1835
function resolveObjectTypeMembers ( type : ObjectType ) : ResolvedObjectType {
@@ -2275,13 +2285,8 @@ module ts {
2275
2285
function getTypeFromTypeLiteralNode ( node : TypeLiteralNode ) : Type {
2276
2286
var links = getNodeLinks ( node ) ;
2277
2287
if ( ! links . resolvedType ) {
2278
- var symbol = node . symbol ;
2279
- var members = symbol . members ;
2280
- var callSignatures = getSignaturesOfSymbol ( members [ "__call" ] ) ;
2281
- var constructSignatures = getSignaturesOfSymbol ( members [ "__new" ] ) ;
2282
- var stringIndexType = getIndexTypeOfSymbol ( symbol , IndexKind . String ) ;
2283
- var numberIndexType = getIndexTypeOfSymbol ( symbol , IndexKind . Number ) ;
2284
- links . resolvedType = createAnonymousType ( symbol , members , callSignatures , constructSignatures , stringIndexType , numberIndexType ) ;
2288
+ // Deferred resolution of members is handled by resolveObjectTypeMembers
2289
+ links . resolvedType = createObjectType ( TypeFlags . Anonymous , node . symbol ) ;
2285
2290
}
2286
2291
return links . resolvedType ;
2287
2292
}
0 commit comments