@@ -101,8 +101,6 @@ class DtsTransformer {
101101 const visitor : ts . Visitor = ( node : ts . Node ) : ts . VisitResult < ts . Node > => {
102102 if ( ts . isClassDeclaration ( node ) ) {
103103 return this . transformClassDeclaration ( node , transforms , imports ) ;
104- } else if ( ts . isFunctionDeclaration ( node ) ) {
105- return this . transformFunctionDeclaration ( node , transforms , imports ) ;
106104 } else {
107105 // Otherwise return node as is.
108106 return ts . visitEachChild ( node , visitor , this . ctx ) ;
@@ -121,73 +119,22 @@ class DtsTransformer {
121119 transforms : DtsTransform [ ] ,
122120 imports : ImportManager ,
123121 ) : ts . ClassDeclaration {
124- let elements : ts . ClassElement [ ] | ReadonlyArray < ts . ClassElement > = clazz . members ;
125- let elementsChanged = false ;
126-
127- for ( const transform of transforms ) {
128- if ( transform . transformClassElement !== undefined ) {
129- for ( let i = 0 ; i < elements . length ; i ++ ) {
130- const res = transform . transformClassElement ( elements [ i ] , imports ) ;
131- if ( res !== elements [ i ] ) {
132- if ( ! elementsChanged ) {
133- elements = [ ...elements ] ;
134- elementsChanged = true ;
135- }
136- ( elements as ts . ClassElement [ ] ) [ i ] = res ;
137- }
138- }
139- }
140- }
141-
142122 let newClazz : ts . ClassDeclaration = clazz ;
143123
144124 for ( const transform of transforms ) {
145125 if ( transform . transformClass !== undefined ) {
146- // If no DtsTransform has changed the class yet, then the (possibly mutated) elements have
147- // not yet been incorporated. Otherwise, `newClazz.members` holds the latest class members.
148- const inputMembers = clazz === newClazz ? elements : newClazz . members ;
149-
150126 newClazz = transform . transformClass (
151127 newClazz ,
152- inputMembers ,
128+ newClazz . members ,
153129 this . reflector ,
154130 this . refEmitter ,
155131 imports ,
156132 ) ;
157133 }
158134 }
159135
160- // If some elements have been transformed but the class itself has not been transformed, create
161- // an updated class declaration with the updated elements.
162- if ( elementsChanged && clazz === newClazz ) {
163- newClazz = ts . factory . updateClassDeclaration (
164- /* node */ clazz ,
165- /* modifiers */ clazz . modifiers ,
166- /* name */ clazz . name ,
167- /* typeParameters */ clazz . typeParameters ,
168- /* heritageClauses */ clazz . heritageClauses ,
169- /* members */ elements ,
170- ) ;
171- }
172-
173136 return newClazz ;
174137 }
175-
176- private transformFunctionDeclaration (
177- declaration : ts . FunctionDeclaration ,
178- transforms : DtsTransform [ ] ,
179- imports : ImportManager ,
180- ) : ts . FunctionDeclaration {
181- let newDecl = declaration ;
182-
183- for ( const transform of transforms ) {
184- if ( transform . transformFunctionDeclaration !== undefined ) {
185- newDecl = transform . transformFunctionDeclaration ( newDecl , imports ) ;
186- }
187- }
188-
189- return newDecl ;
190- }
191138}
192139
193140export interface IvyDeclarationField {
0 commit comments