Commit 23950f2c authored by Michael Beck's avatar Michael Beck
Browse files

- make errors and warnings more understandable

[r25984]
parent 7a9a11e3
...@@ -5,13 +5,21 @@ from jinja2.filters import do_dictsort ...@@ -5,13 +5,21 @@ from jinja2.filters import do_dictsort
from spec_util import is_dynamic_pinned, verify_node from spec_util import is_dynamic_pinned, verify_node
import ir_spec import ir_spec
def error(msg):
"""writes an error message to stderr"""
sys.stderr.write("Error: " + msg + "\n");
def warning(msg):
"""writes a warning message to stderr"""
sys.stderr.write("Warning: " + msg + "\n");
def format_args(arglist): def format_args(arglist):
#argstrings = map(lambda arg : arg["name"], arglist) #argstrings = map(lambda arg : arg["name"], arglist)
#return ", ".join(argstrings) #return ", ".join(argstrings)
s = ", ".join(arglist) s = ", ".join(arglist)
if len(s) == 0: if len(s) == 0:
return ""; return ""
return ", " + s; return ", " + s
def format_ifnset(string, node, key): def format_ifnset(string, node, key):
if key in node: if key in node:
...@@ -77,7 +85,7 @@ def get_io_type(type, attrname, nodename): ...@@ -77,7 +85,7 @@ def get_io_type(type, attrname, nodename):
importcmd = "long %s = read_long(env);" % attrname importcmd = "long %s = read_long(env);" % attrname
exportcmd = """fprintf(env->file, "%%ld ", %(val)s);""" exportcmd = """fprintf(env->file, "%%ld ", %(val)s);"""
else: else:
print "UNKNOWN TYPE: %s" % type error("cannot generate import/export for node %s: unsupported attribute type: %s" % (nodename, type))
importcmd = """// BAD: %s %s importcmd = """// BAD: %s %s
%s %s = (%s) 0;""" % (type, attrname, type, attrname, type) %s %s = (%s) 0;""" % (type, attrname, type, attrname, type)
exportcmd = "// BAD: %s" % type exportcmd = "// BAD: %s" % type
...@@ -139,11 +147,11 @@ def preprocess_node(nodename, node): ...@@ -139,11 +147,11 @@ def preprocess_node(nodename, node):
prepare_attr(nodename, attr) prepare_attr(nodename, attr)
if "special" in attr: if "special" in attr:
if not "init" in attr: if not "init" in attr:
print "Node type %s has an attribute with a \"special\" entry but without \"init\"" % nodename warning("Node type %s has an attribute with a \"special\" entry but without \"init\"" % nodename)
sys.exit(1) sys.exit(1)
if attrs_with_special != 0: if attrs_with_special != 0:
print "Node type %s has more than one attribute with a \"special\" entry" % nodename warning("Node type %s has more than one attribute with a \"special\" entry" % nodename)
sys.exit(1) sys.exit(1)
attrs_with_special += 1 attrs_with_special += 1
...@@ -153,7 +161,7 @@ def preprocess_node(nodename, node): ...@@ -153,7 +161,7 @@ def preprocess_node(nodename, node):
elif "suffix" in attr["special"]: elif "suffix" in attr["special"]:
specialname = nodename + attr["special"]["suffix"] specialname = nodename + attr["special"]["suffix"]
else: else:
print "Unknown special constructor type for node type %s" %nodename error("Unknown special constructor type for node type %s" % nodename)
sys.exit(1) sys.exit(1)
specialconstrs.append( specialconstrs.append(
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment