/******************************************************************************* * Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html ******************************************************************************/ package org.axdt.as3.validation; import org.axdt.as3.As3EPackage; import org.axdt.as3.model.As3Class; import org.axdt.as3.model.As3Interface; import org.axdt.as3.model.As3Operation; import org.axdt.as3.model.As3VariableDefinition; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.validation.Check; import org.eclipse.xtext.validation.ValidationMessageAcceptor; public class As3JavaValidator extends AbstractAs3JavaValidator { @Check public void checkInterface(As3Interface def) { if (!Character.isUpperCase(def.getName().charAt(0))) { warning("Name should start with a capital", def.eClass().getEStructuralFeature(As3EPackage.AS3_INTERFACE__NAME) ); } } @Check public void checkClass(As3Class def) { if (!Character.isUpperCase(def.getName().charAt(0))) { warning("Name should start with a capital", def.eClass().getEStructuralFeature(As3EPackage.AS3_CLASS__NAME) ); } } @Check public void checkFunction(As3Operation def) { boolean isConstructor = false, isInterface = false; if (def.eContainer()!=null) { EObject granpa = def.eContainer(); if (granpa instanceof As3Class) { isConstructor = def.getName().equals(((As3Class) granpa).getName()); } else { isInterface = granpa instanceof As3Interface; } } if (isConstructor) { if (def.getReturnType() != null) { error("Constructor cannot have result type", def.eClass().getEStructuralFeature(As3EPackage.AS3_OPERATION__RETURN_TYPE) ); } } else if (def.getReturnType() == null) { warning("Methods need a result type", def, def.eClass().getEStructuralFeature(As3EPackage.AS3_OPERATION__RETURN_TYPE), ValidationMessageAcceptor.INSIGNIFICANT_INDEX ); } if (isInterface) { if (def.getBody() != null) { error("Method signatures cannot have a body", def.eClass().getEStructuralFeature(As3EPackage.AS3_OPERATION__BODY) ); } } else if (def.getBody() == null) { warning("Methods need a method body", def, def.eClass().getEStructuralFeature(As3EPackage.AS3_OPERATION__BODY), ValidationMessageAcceptor.INSIGNIFICANT_INDEX ); } } @Check public void checkVariable(As3VariableDefinition def) { } }