import  cs : 'ClassesCS.ecore#/'
import  as : 'Classes.ecore#/'
import 'classescs2asV2Helpers.ocl'
import 'classescs2asV2Lookup.ocl'
package cs

-- FIXME manually added
context ElementCS
def : ast() : as::Element =
	ast.oclAsType(as::Element)
	
context NameExpCS 
def : lookupOperation() : as::Operation = 
	if oclContainer().oclIsKindOf(NameExpCS) 
	then ast.oclAsType(as::CallExp).lookupOperationFrom(ast.oclAsType(as::CallExp).owningSource.type, self.name, ast.oclAsType(as::OperationCallExp).ownedArguments) 
	else ast.oclAsType(as::CallExp).lookupOperation(name, ast.oclAsType(as::CallExp).oclAsType(as::OperationCallExp).ownedArguments)
	endif
-- END OF manual addition
	
context NameExpCS
def : isOpCallExp() : Boolean =
	roundedBrackets <> null
	
def : isPropCallExp() : Boolean =
	roundedBrackets = null
	
endpackage
