if (superClass != null && (superClass.hasNullTypeAnnotations() || substitution != null)) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superClass, providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); if (superInterfaces[i].hasNullTypeAnnotations() || substitution != null) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superInterfaces[i], providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); severity = severity.max(dimSeverity); if (severity == Severity.MISMATCH) return NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH; severity = severity.max(s); if (!severity.isAnyMismatch() && (providedBits & TagBits.AnnotationNonNull) != 0) okStatus = okNonNullStatus(providedExpression); TypeBinding providedArgSubstitute = providedSubstitutes != null ? providedSubstitutes[i] : null; NullAnnotationMatching status = analyse(requiredArguments[i], providedArguments[i], providedArgSubstitute, substitution, -1, providedExpression, mode.toDetail()); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); TypeBinding providedEnclSubstitute = providedSubstitute != null ? providedSubstitute.enclosingType() : null; NullAnnotationMatching status = analyse(requiredEnclosing, providedEnclosing, providedEnclSubstitute, substitution, -1, providedExpression, mode); severity = severity.max(status.severity);
if (superClass != null && (superClass.hasNullTypeAnnotations() || substitution != null)) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superClass, providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); if (superInterfaces[i].hasNullTypeAnnotations() || substitution != null) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superInterfaces[i], providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); severity = severity.max(dimSeverity); if (severity == Severity.MISMATCH) return NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH; severity = severity.max(s); if (!severity.isAnyMismatch() && (providedBits & TagBits.AnnotationNullMASK) == TagBits.AnnotationNonNull) okStatus = okNonNullStatus(providedExpression); TypeBinding providedArgSubstitute = providedSubstitutes != null ? providedSubstitutes[i] : null; NullAnnotationMatching status = analyse(requiredArguments[i], providedArguments[i], providedArgSubstitute, substitution, -1, providedExpression, mode.toDetail()); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); TypeBinding providedEnclSubstitute = providedSubstitute != null ? providedSubstitute.enclosingType() : null; NullAnnotationMatching status = analyse(requiredEnclosing, providedEnclosing, providedEnclSubstitute, substitution, -1, providedExpression, mode); severity = severity.max(status.severity);
if (superClass != null && (superClass.hasNullTypeAnnotations() || substitution != null)) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superClass, providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); if (superInterfaces[i].hasNullTypeAnnotations() || substitution != null) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superInterfaces[i], providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); severity = severity.max(dimSeverity); if (severity == Severity.MISMATCH) return NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH; severity = severity.max(s); if (!severity.isAnyMismatch() && (providedBits & TagBits.AnnotationNonNull) != 0) okStatus = okNonNullStatus(providedExpression); TypeBinding providedArgSubstitute = providedSubstitutes != null ? providedSubstitutes[i] : null; NullAnnotationMatching status = analyse(requiredArguments[i], providedArguments[i], providedArgSubstitute, substitution, -1, providedExpression, mode.toDetail()); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); TypeBinding providedEnclSubstitute = providedSubstitute != null ? providedSubstitute.enclosingType() : null; NullAnnotationMatching status = analyse(requiredEnclosing, providedEnclosing, providedEnclSubstitute, substitution, -1, providedExpression, mode); severity = severity.max(status.severity);
if (superClass != null && (superClass.hasNullTypeAnnotations() || substitution != null)) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superClass, providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); if (superInterfaces[i].hasNullTypeAnnotations() || substitution != null) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superInterfaces[i], providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); severity = severity.max(dimSeverity); if (severity == Severity.MISMATCH) return NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH; severity = severity.max(s); if (!severity.isAnyMismatch() && (providedBits & TagBits.AnnotationNullMASK) == TagBits.AnnotationNonNull) okStatus = okNonNullStatus(providedExpression); TypeBinding providedArgSubstitute = providedSubstitutes != null ? providedSubstitutes[i] : null; NullAnnotationMatching status = analyse(requiredArguments[i], providedArguments[i], providedArgSubstitute, substitution, -1, providedExpression, mode.toDetail()); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); TypeBinding providedEnclSubstitute = providedSubstitute != null ? providedSubstitute.enclosingType() : null; NullAnnotationMatching status = analyse(requiredEnclosing, providedEnclosing, providedEnclSubstitute, substitution, -1, providedExpression, mode); severity = severity.max(status.severity);
if (superClass != null && (superClass.hasNullTypeAnnotations() || substitution != null)) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superClass, providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); if (superInterfaces[i].hasNullTypeAnnotations() || substitution != null) { // annotations may enter when substituting a nested type variable NullAnnotationMatching status = analyse(superInterfaces[i], providedType, null, substitution, nullStatus, providedExpression, CheckMode.BOUND_SUPER_CHECK); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); severity = severity.max(dimSeverity); if (severity == Severity.MISMATCH) return NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH; severity = severity.max(s); if (!severity.isAnyMismatch() && (providedBits & TagBits.AnnotationNonNull) != 0) okStatus = okNonNullStatus(providedExpression); TypeBinding providedArgSubstitute = providedSubstitutes != null ? providedSubstitutes[i] : null; NullAnnotationMatching status = analyse(requiredArguments[i], providedArguments[i], providedArgSubstitute, substitution, -1, providedExpression, mode.toDetail()); severity = severity.max(status.severity); if (severity == Severity.MISMATCH) return new NullAnnotationMatching(severity, nullStatus, superTypeHint); TypeBinding providedEnclSubstitute = providedSubstitute != null ? providedSubstitute.enclosingType() : null; NullAnnotationMatching status = analyse(requiredEnclosing, providedEnclosing, providedEnclSubstitute, substitution, -1, providedExpression, mode); severity = severity.max(status.severity);