Beispiel #1
0
 def testAnonymousAnyTypeWithAttribute(self):
     # any x with attribute: name
     list = IdentifierList("name")
     argument = ExtendedParameter(AnyType.instance, "x", list)
     argument.register(self.context)
     st = argument.getType(self.context)
     self.assertIsInstance(st, CategoryType)
     self.assertFalse(
         st.isAssignableFrom(self.context, BooleanType.instance))
     self.assertFalse(
         st.isAssignableFrom(self.context, IntegerType.instance))
     self.assertFalse(
         st.isAssignableFrom(self.context, DecimalType.instance))
     self.assertFalse(st.isAssignableFrom(self.context, TextType.instance))
     self.assertFalse(st.isAssignableFrom(self.context, DateType.instance))
     self.assertFalse(
         st.isAssignableFrom(self.context, DateTimeType.instance))
     self.assertFalse(
         st.isAssignableFrom(self.context, MissingType.instance))
     self.assertFalse(st.isAssignableFrom(
         self.context, AnyType.instance))  # any type never compatible
     self.assertTrue(
         st.isAssignableFrom(
             self.context,
             CategoryType("Simple")))  # since Simple has a name
     self.assertFalse(
         st.isAssignableFrom(
             self.context, CategoryType("Root")))  # since Root has no name
     self.assertFalse(
         st.isAssignableFrom(self.context, CategoryType(
             "DerivedWithOther")))  # since DerivedWithOther has no name
     self.assertTrue(
         st.isAssignableFrom(self.context, CategoryType(
             "DerivedWithName")))  # since DerivedWithName has a name
 def toArrowExpression(self):
     if self.itemName is not None:
         arrow = ArrowExpression(IdentifierList(self.itemName), None, None)
         arrow.setExpression(self.predicate)
         return arrow
     elif isinstance(self.predicate, ArrowExpression):
         return self.predicate
     else:
         raise SyntaxError("Expecting an arrow expression!")
Beispiel #3
0
 def register(self, context):
     from prompto.grammar.INamedInstance import INamedInstance
     actual = context.getRegisteredValue(INamedInstance, self.name)
     if actual is not None:
         raise SyntaxError("Duplicate argument: \"" + self.name + "\"")
     from prompto.declaration.ConcreteCategoryDeclaration import ConcreteCategoryDeclaration
     from prompto.grammar.IdentifierList import IdentifierList
     declaration = ConcreteCategoryDeclaration(self.name)
     declaration.setDerivedFrom(IdentifierList(self.itype.typeName))
     declaration.setAttributes(self.attributes)
     context.registerDeclaration(declaration)
     context.registerValue(self)
     if self.defaultExpression is not None:
         value = self.defaultExpression.interpret(context)
         context.setValue(self.name, value)
Beispiel #4
0
 def toArrowExpression(self) -> ArrowExpression:
     arrow = ArrowExpression(IdentifierList(self.itemName), None, None)
     arrow.setExpression(self.predicate)
     return arrow
Beispiel #5
0
 def __init__(self, name, derivedFrom, methods):
     super(ConcreteWidgetDeclaration, self).__init__(name, None)
     if derivedFrom is not None:
         self.setDerivedFrom(IdentifierList(derivedFrom))
     self.setMethods(methods)