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