/*
 * generated by Xtext 2.11.0
 */
package org.eclipse.osbp.xtext.functionlibrarydsl.validation


/**
 * This class contains custom validation rules. 
 *
 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
 */
class FunctionLibraryDslValidator extends AbstractFunctionLibraryDslValidator {
	
//	public static val INVALID_NAME = 'invalidName'
//
//	@Check
//	def checkGreetingStartsWithCapital(Greeting greeting) {
//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
//			warning('Name should start with a capital', 
//					FunctionLibraryDslPackage.Literals.GREETING__NAME,
//					INVALID_NAME)
//		}
//	}
	
}
