def check(self): ctx = get_context() self.resolver = resolve_property(self.resolver) with self.mappings_prop.diagnostic_context: mapping_type = self.mappings_prop.type if mapping_type.matches(T.env_assoc): ctx.has_env_assoc = True elif mapping_type.matches(T.env_assoc.array): ctx.has_env_assoc = True ctx.has_env_assoc_array = True else: check_source_language( False, 'The bindings expression in environment specification must' ' must be either an env_assoc or an array of env_assocs:' ' got {} instead'.format(mapping_type.dsl_name) ) if self.resolver: # Ask for the creation of untyped wrappers for all # properties used as entity resolvers. self.resolver.require_untyped_wrapper() check_source_language( self.resolver.type.matches(T.entity), 'Entity resolver properties must return entities' ' (got {})'.format(self.resolver.type.dsl_name) ) check_source_language( not self.resolver.dynamic_vars, 'Entity resolver properties must have no dynamically' ' bound variable' )
def check(self): """ Check that the resolver property is conforming. """ get_context().has_ref_env = True self.resolver = resolve_property(self.resolver) self.resolver.require_untyped_wrapper() check_source_language( self.resolver.type.matches(T.LexicalEnvType), 'Referenced environment resolver must return a lexical' ' environment (not {})'.format( self.resolver.type.dsl_name ) ) check_source_language( not self.resolver.natural_arguments, 'Referenced environment resolver must take no argument' ) check_source_language( not self.resolver.dynamic_vars, 'Referenced environment resolver must have no dynamically bound' ' variable' )
def check(self): """ Check that the resolver property is conforming. """ ctx = get_context() ctx.has_ref_env = True if self.category: check_source_language( self.category != 'nocat', 'Nocat is not a valid name for a referenced env category') self.category = names.Name.from_lower(self.category) ctx.ref_cats.add(self.category) self.resolver = resolve_property(self.resolver) self.resolver.require_untyped_wrapper() check_source_language( self.resolver.type.matches(T.LexicalEnv), 'Referenced environment resolver must return a lexical' ' environment (not {})'.format(self.resolver.type.dsl_name)) check_source_language( not self.resolver.natural_arguments, 'Referenced environment resolver must take no argument') check_source_language( not self.resolver.dynamic_vars, 'Referenced environment resolver must have no dynamically bound' ' variable')