anchor.diff:      // into the current ErrorReporter, because they usually happen in a
       // different source. But they still should cause a constant evaluation
       // error for the current node.
  -    var externalErrorListener = new RecordingErrorListener();
  +    var externalErrorListener = new BooleanErrorListener();
       var externalErrorReporter =
           new ErrorReporter(externalErrorListener, constructor.source);
  -
  -    void reportLocalErrorForRecordedExternalErrors() {
  -      if (externalErrorListener.errors.isNotEmpty) {
  -        errorReporter.reportErrorForNode(
  -            CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
  -      }
  -    }
   
       // Start with final fields that are initialized at their declaration site.
       List<FieldElement> fields = constructor.enclosingElement.fields;
  
positive.code:             superArguments, initializerVisitor, externalErrorReporter);
        }
      }
      reportLocalErrorForRecordedExternalErrors();
      return new DartObjectImpl(
          definingClass, new GenericState(fieldMap, invocation: invocation));
    }
  
negative.code:               initializerVisitor,
                externalErrorReporter,
                invocation: invocation);
            if (externalErrorListener.errorReported) {
              errorReporter.reportErrorForNode(
                  CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
            }
            return result;
          }
        } else if (initializer is AssertInitializer) {
  