anchor.diff:              superArguments, initializerVisitor, externalErrorReporter);
         }
       }
  -    reportLocalErrorForRecordedExternalErrors();
  +    if (externalErrorListener.errorReported) {
  +      errorReporter.reportErrorForNode(
  +          CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
  +    }
       return new DartObjectImpl(
           definingClass, new GenericState(fieldMap, invocation: invocation));
     }
  
positive.code:     // 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 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;
  
negative.code:               initializerVisitor,
                externalErrorReporter,
                invocation: invocation);
            if (externalErrorListener.errorReported) {
              errorReporter.reportErrorForNode(
                  CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
            }
            return result;
          }
        } else if (initializer is AssertInitializer) {
  