@@ -309,13 +309,6 @@ class AnnotateKernel extends RecursiveVisitor<Null> {
309309 if (_typeFlowAnalysis.isMemberUsed (member)) {
310310 if (member is Field ) {
311311 _setInferredType (member, _typeFlowAnalysis.fieldType (member));
312-
313- final unboxingInfoMetadata =
314- _unboxingInfo.getUnboxingInfoOfMember (member);
315- if (unboxingInfoMetadata != null &&
316- ! unboxingInfoMetadata.isFullyBoxed) {
317- _unboxingInfoMetadata.mapping[member] = unboxingInfoMetadata;
318- }
319312 } else {
320313 Args <Type > argTypes = _typeFlowAnalysis.argumentTypes (member);
321314 final uncheckedParameters =
@@ -346,36 +339,41 @@ class AnnotateKernel extends RecursiveVisitor<Null> {
346339 skipCheck: uncheckedParameters.contains (param));
347340 }
348341
349- final unboxingInfoMetadata =
350- _unboxingInfo.getUnboxingInfoOfMember (member);
351- if (unboxingInfoMetadata != null &&
352- ! unboxingInfoMetadata.isFullyBoxed) {
353- _unboxingInfoMetadata.mapping[member] = unboxingInfoMetadata;
354- }
355-
356342 // TODO(alexmarkov): figure out how to pass receiver type.
357343 }
358- } else if (! member.isAbstract &&
359- ! fieldMorpher.isExtraMemberWithReachableBody (member)) {
360- _setUnreachable (member);
361- } else if (member is ! Field ) {
344+
362345 final unboxingInfoMetadata =
363346 _unboxingInfo.getUnboxingInfoOfMember (member);
364- if (unboxingInfoMetadata != null ) {
365- // Check for partitions that only have abstract methods should be marked as boxed.
366- if (unboxingInfoMetadata.returnInfo ==
367- UnboxingInfoMetadata .kUnboxingCandidate) {
368- unboxingInfoMetadata.returnInfo = UnboxingInfoMetadata .kBoxed;
369- }
370- for (int i = 0 ; i < unboxingInfoMetadata.unboxedArgsInfo.length; i++ ) {
371- if (unboxingInfoMetadata.unboxedArgsInfo[i] ==
347+ if (unboxingInfoMetadata != null && ! unboxingInfoMetadata.isFullyBoxed) {
348+ _unboxingInfoMetadata.mapping[member] = unboxingInfoMetadata;
349+ }
350+ } else {
351+ if (! member.isAbstract &&
352+ ! fieldMorpher.isExtraMemberWithReachableBody (member)) {
353+ _setUnreachable (member);
354+ }
355+
356+ if (member is ! Field ) {
357+ final unboxingInfoMetadata =
358+ _unboxingInfo.getUnboxingInfoOfMember (member);
359+ if (unboxingInfoMetadata != null ) {
360+ // Check for partitions that only have abstract methods should be marked as boxed.
361+ if (unboxingInfoMetadata.returnInfo ==
372362 UnboxingInfoMetadata .kUnboxingCandidate) {
373- unboxingInfoMetadata.unboxedArgsInfo[i] =
374- UnboxingInfoMetadata .kBoxed;
363+ unboxingInfoMetadata.returnInfo = UnboxingInfoMetadata .kBoxed;
364+ }
365+ for (int i = 0 ;
366+ i < unboxingInfoMetadata.unboxedArgsInfo.length;
367+ i++ ) {
368+ if (unboxingInfoMetadata.unboxedArgsInfo[i] ==
369+ UnboxingInfoMetadata .kUnboxingCandidate) {
370+ unboxingInfoMetadata.unboxedArgsInfo[i] =
371+ UnboxingInfoMetadata .kBoxed;
372+ }
373+ }
374+ if (! unboxingInfoMetadata.isFullyBoxed) {
375+ _unboxingInfoMetadata.mapping[member] = unboxingInfoMetadata;
375376 }
376- }
377- if (! unboxingInfoMetadata.isFullyBoxed) {
378- _unboxingInfoMetadata.mapping[member] = unboxingInfoMetadata;
379377 }
380378 }
381379 }
0 commit comments