668 */ |
668 */ |
669 Type checkConstructorRefType(DiagnosticPosition pos, Type t) { |
669 Type checkConstructorRefType(DiagnosticPosition pos, Type t) { |
670 t = checkClassOrArrayType(pos, t); |
670 t = checkClassOrArrayType(pos, t); |
671 if (t.hasTag(CLASS)) { |
671 if (t.hasTag(CLASS)) { |
672 if ((t.tsym.flags() & (ABSTRACT | INTERFACE)) != 0) { |
672 if ((t.tsym.flags() & (ABSTRACT | INTERFACE)) != 0) { |
673 log.error(pos, "abstract.cant.be.instantiated"); |
673 log.error(pos, "abstract.cant.be.instantiated", t.tsym); |
674 t = types.createErrorType(t); |
674 t = types.createErrorType(t); |
675 } else if ((t.tsym.flags() & ENUM) != 0) { |
675 } else if ((t.tsym.flags() & ENUM) != 0) { |
676 log.error(pos, "enum.cant.be.instantiated"); |
676 log.error(pos, "enum.cant.be.instantiated"); |
|
677 t = types.createErrorType(t); |
|
678 } else { |
|
679 t = checkClassType(pos, t, true); |
|
680 } |
|
681 } else if (t.hasTag(ARRAY)) { |
|
682 if (!types.isReifiable(((ArrayType)t).elemtype)) { |
|
683 log.error(pos, "generic.array.creation"); |
677 t = types.createErrorType(t); |
684 t = types.createErrorType(t); |
678 } |
685 } |
679 } |
686 } |
680 return t; |
687 return t; |
681 } |
688 } |