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().lookupOperationFrom(ast().oclAsType(as::OperationCallExp).owningSource.type, self.name, ast().oclAsType(as::OperationCallExp).ownedArguments) 
	else ast().lookupOperation(name, ast().oclAsType(as::OperationCallExp).ownedArguments)
	endif
-- END OF manual addition
	
context NameExpCS
def : isOpCallExp() : Boolean =
	roundedBrackets <> null
def : isPropCallExp() : Boolean =
	roundedBrackets = null
	
endpackage
