private boolean checkHasSubtype() { boolean subtypeValid; if (externalType.hasSubType()) { subtypeValid = externalTypeBinding.getStereotype() != null; } else { problemRequestor.acceptProblem( externalType.getName(), IProblemRequestor.PART_DEFINITION_REQUIRES_TYPE_CLAUSE, new String[] {externalType.getName().getCanonicalName()}); subtypeValid = false; } return subtypeValid; }
@Override public boolean visit(ExternalType externalType) { this.externalType = externalType; EGLNameValidator.validate( externalType.getName(), EGLNameValidator.HANDLER, problemRequestor, compilerOptions); new AnnotationValidator(problemRequestor, compilerOptions) .validateAnnotationTarget(externalType); if (checkHasSubtype()) { checkExtendedTypes(externalTypeBinding.getStereotype().getEClass()); checkCycles(); } return true; }
private void checkParameters(List parameters) { Stereotype subtype = externalTypeBinding.getStereotype(); if (subtype != null) { // do not validate the parms for NativeType EClass clazz = subtype.getEClass(); if (clazz != null && NameUtile.equals( clazz.getName(), NameUtile.getAsName(IEGLConstants.PROPERTY_NATIVETYPE)) && NameUtile.equals(clazz.getPackageName(), NameUtile.getAsName("eglx.lang"))) { return; } } for (Iterator iter = parameters.iterator(); iter.hasNext(); ) { FunctionParameter parm = (FunctionParameter) iter.next(); if (parm.isParmConst()) { problemRequestor.acceptProblem( parm, IProblemRequestor.EXTERNALTYPE_PARM_CANNOT_BE_CONST, new String[] {parm.getName().getCanonicalName()}); } } }