@@ -124,21 +124,38 @@ class _RewriterVisitor extends Object with RecursiveAstVisitor<Object> {
124124 _rewriteBootstrapCallToStatic (MethodInvocation node) {
125125 if (_rewriter._writeStaticInit) {
126126 buf.write (_rewriter._code.substring (_currentIndex, node.offset));
127- _writeStaticReflectorInitOnce ();
127+
128+ var args = node.argumentList.arguments;
129+ int numArgs = node.argumentList.arguments.length;
130+ if (numArgs < 1 || numArgs > 2 ) {
131+ logger.warning ('`bootstrap` does not support $numArgs arguments. Found bootstrap${node .argumentList }. Transform may not succeed.' );
132+ }
133+
134+ var reflectorInit = _setupAdded
135+ ? ''
136+ : ', () { ${_getStaticReflectorInitBlock ()} }' ;
137+
128138 // rewrite `bootstrap(...)` to `bootstrapStatic(...)`
129- buf.write ('bootstrapStatic${node .argumentList }' );
139+ buf.write ('bootstrapStatic(' );
140+ buf.write (args[0 ]);
141+ if (numArgs == 1 ) {
142+ if (reflectorInit.isNotEmpty) {
143+ buf.write (', null' );
144+ }
145+ } else {
146+ buf.write (', ${args [1 ]}' );
147+ }
148+ buf.write (reflectorInit);
149+ buf.write (')' );
130150 } else {
131151 // leave it as is
132152 buf.write (_rewriter._code.substring (_currentIndex, node.end));
133153 }
134154 _currentIndex = node.end;
135155 }
136156
137- _writeStaticReflectorInitOnce () {
138- if (! _setupAdded) {
139- buf.write (_rewriter._codegen.codegenSetupReflectionCall ());
140- _setupAdded = true ;
141- }
157+ String _getStaticReflectorInitBlock () {
158+ return _rewriter._codegen.codegenSetupReflectionCall ();
142159 }
143160
144161 _rewriteReflectionCapabilitiesImport (ImportDirective node) {
@@ -162,8 +179,9 @@ class _RewriterVisitor extends Object with RecursiveAstVisitor<Object> {
162179 node = node.parent;
163180 }
164181 buf.write (_rewriter._code.substring (_currentIndex, node.offset));
165- if (_rewriter._writeStaticInit) {
166- _writeStaticReflectorInitOnce ();
182+ if (_rewriter._writeStaticInit && ! _setupAdded) {
183+ buf.write (_getStaticReflectorInitBlock ());
184+ _setupAdded = true ;
167185 }
168186 switch (_rewriter._mirrorMode) {
169187 case MirrorMode .debug:
0 commit comments