@@ -1715,15 +1715,17 @@ impl<'a> SemanticBuilder<'a> {
17151715 AstKind :: TSInterfaceHeritage ( _) => {
17161716 self . current_reference_flag = ReferenceFlag :: Type ;
17171717 }
1718+ AstKind :: TSTypeQuery ( _) => {
1719+ // type A = typeof a;
1720+ // ^^^^^^^^
1721+ self . current_reference_flag = ReferenceFlag :: Read | ReferenceFlag :: TSTypeQuery ;
1722+ }
17181723 AstKind :: TSTypeName ( _) => {
17191724 match self . nodes . parent_kind ( self . current_node_id ) {
17201725 Some (
1721- // type A = typeof a;
1722- // ^^^^^^^^
1723- AstKind :: TSTypeQuery ( _)
17241726 // import A = a;
17251727 // ^
1726- | AstKind :: TSModuleReference ( _)
1728+ AstKind :: TSModuleReference ( _) ,
17271729 ) => {
17281730 self . current_reference_flag = ReferenceFlag :: Read ;
17291731 }
@@ -1732,7 +1734,9 @@ impl<'a> SemanticBuilder<'a> {
17321734 // ^^^ Keep the current reference flag
17331735 }
17341736 _ => {
1735- self . current_reference_flag = ReferenceFlag :: Type ;
1737+ if !self . current_reference_flag . is_ts_type_query ( ) {
1738+ self . current_reference_flag = ReferenceFlag :: Type ;
1739+ }
17361740 }
17371741 }
17381742 }
@@ -1847,7 +1851,9 @@ impl<'a> SemanticBuilder<'a> {
18471851 self . current_reference_flag -= ReferenceFlag :: Read ;
18481852 }
18491853 }
1850- AstKind :: MemberExpression ( _) => self . current_reference_flag = ReferenceFlag :: empty ( ) ,
1854+ AstKind :: MemberExpression ( _) | AstKind :: TSTypeQuery ( _) => {
1855+ self . current_reference_flag = ReferenceFlag :: empty ( ) ;
1856+ }
18511857 AstKind :: AssignmentTarget ( _) => self . current_reference_flag -= ReferenceFlag :: Write ,
18521858 _ => { }
18531859 }
@@ -1873,10 +1879,10 @@ impl<'a> SemanticBuilder<'a> {
18731879
18741880 /// Resolve reference flags for the current ast node.
18751881 fn resolve_reference_usages ( & self ) -> ReferenceFlag {
1876- if self . current_reference_flag . is_write ( ) || self . current_reference_flag . is_type ( ) {
1877- self . current_reference_flag
1878- } else {
1882+ if self . current_reference_flag . is_empty ( ) {
18791883 ReferenceFlag :: Read
1884+ } else {
1885+ self . current_reference_flag
18801886 }
18811887 }
18821888
0 commit comments