コード例 #1
0
 def collectReturnTypes(self, context, types):
     itype = self.instructions.check(context, None)
     if itype != VoidType.instance:
         types[itype.getName()] = itype
     local = context.newLocalContext()
     local.registerValue(ErrorVariable(self.errorName))
     super().collectReturnTypes(local, types)
     if self.alwaysInstructions != None:
         itype = self.alwaysInstructions.check(context, None)
         if itype != VoidType.instance:
             types[itype.getName()] = itype
コード例 #2
0
 def populateError(self, e, context):
     error = e.getExpression(context)
     if error == None:
         exp = ConstructorExpression(CategoryType("Error"), None, None)
         args = ArgumentList()
         args.append(Argument(UnresolvedParameter("name"), TextLiteral(type(e).__name__)))
         args.append(Argument(UnresolvedParameter("text"), TextLiteral(e.getMessage())))
         exp.setArguments(args)
         error = exp
     if context.getRegisteredValue(INamedInstance, self.errorName) == None:
         context.registerValue(ErrorVariable(self.errorName))
     if isinstance(error, IExpression):
         error = error.interpret(context)
     context.setValue(self.errorName, error)
     return error
コード例 #3
0
 def interpret(self, context, errorName):
     exp = self.getExpression(context)
     if exp is None:
         from prompto.grammar.Argument import Argument
         from prompto.grammar.ArgumentList import ArgumentList
         from prompto.expression.ConstructorExpression import ConstructorExpression
         from prompto.param.UnresolvedParameter import UnresolvedParameter
         from prompto.literal.TextLiteral import TextLiteral
         from prompto.type.CategoryType import CategoryType
         args = ArgumentList()
         args.append(
             Argument(UnresolvedParameter("name"),
                      TextLiteral(type(self).__name__)))
         args.append(
             Argument(UnresolvedParameter("text"),
                      TextLiteral(self.message)))
         exp = ConstructorExpression(CategoryType("Error"), args, None)
     if context.getRegisteredValue(object, errorName) is None:
         from prompto.runtime.ErrorVariable import ErrorVariable
         context.registerValue(ErrorVariable(errorName))
     error = exp.interpret(context)
     context.setValue(errorName, error)
     return error
コード例 #4
0
 def toDialect(self, writer):
     writer = writer.newLocalWriter()
     writer.context.registerValue(ErrorVariable(self.errorName))
     super().toDialect(writer)
コード例 #5
0
 def checkSwitchCasesType(self, context):
     local = context.newLocalContext()
     local.registerValue(ErrorVariable(self.errorName))
     super().checkSwitchCasesType(local)