forked from M-Labs/artiq
Replace single-quoted strings with double-quoted.
This commit is contained in:
parent
6c3b5a95ee
commit
eb76f594a0
|
@ -9,7 +9,7 @@ from pythonparser.algorithm import Visitor as ASTVisitor
|
||||||
class commontyped(ast.commonloc):
|
class commontyped(ast.commonloc):
|
||||||
"""A mixin for typed AST nodes."""
|
"""A mixin for typed AST nodes."""
|
||||||
|
|
||||||
_types = ('type',)
|
_types = ("type",)
|
||||||
|
|
||||||
def _reprfields(self):
|
def _reprfields(self):
|
||||||
return self._fields + self._locs + self._types
|
return self._fields + self._locs + self._types
|
||||||
|
|
|
@ -89,21 +89,21 @@ class LocalExtractor(algorithm.Visitor):
|
||||||
|
|
||||||
def _check_not_in(self, name, names, curkind, newkind, loc):
|
def _check_not_in(self, name, names, curkind, newkind, loc):
|
||||||
if name in names:
|
if name in names:
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"name '{name}' cannot be {curkind} and {newkind} simultaneously",
|
"name '{name}' cannot be {curkind} and {newkind} simultaneously",
|
||||||
{"name": name, "curkind": curkind, "newkind": newkind}, loc)
|
{"name": name, "curkind": curkind, "newkind": newkind}, loc)
|
||||||
self.engine.process(diag)
|
self.engine.process(diag)
|
||||||
|
|
||||||
def visit_Global(self, node):
|
def visit_Global(self, node):
|
||||||
for name, loc in zip(node.names, node.name_locs):
|
for name, loc in zip(node.names, node.name_locs):
|
||||||
self._check_not_in(name, self.nonlocal_, 'nonlocal', 'global', loc)
|
self._check_not_in(name, self.nonlocal_, "nonlocal", "global", loc)
|
||||||
self._check_not_in(name, self.params, 'a parameter', 'global', loc)
|
self._check_not_in(name, self.params, "a parameter", "global", loc)
|
||||||
self.global_.add(name)
|
self.global_.add(name)
|
||||||
|
|
||||||
def visit_Nonlocal(self, node):
|
def visit_Nonlocal(self, node):
|
||||||
for name, loc in zip(node.names, node.name_locs):
|
for name, loc in zip(node.names, node.name_locs):
|
||||||
self._check_not_in(name, self.global_, 'global', 'nonlocal', loc)
|
self._check_not_in(name, self.global_, "global", "nonlocal", loc)
|
||||||
self._check_not_in(name, self.params, 'a parameter', 'nonlocal', loc)
|
self._check_not_in(name, self.params, "a parameter", "nonlocal", loc)
|
||||||
|
|
||||||
found = False
|
found = False
|
||||||
for outer_env in reversed(self.env_stack):
|
for outer_env in reversed(self.env_stack):
|
||||||
|
@ -111,7 +111,7 @@ class LocalExtractor(algorithm.Visitor):
|
||||||
found = True
|
found = True
|
||||||
break
|
break
|
||||||
if not found:
|
if not found:
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"can't declare name '{name}' as nonlocal: it is not bound in any outer scope",
|
"can't declare name '{name}' as nonlocal: it is not bound in any outer scope",
|
||||||
{"name": name},
|
{"name": name},
|
||||||
loc, [node.keyword_loc])
|
loc, [node.keyword_loc])
|
||||||
|
@ -137,29 +137,29 @@ class Inferencer(algorithm.Transformer):
|
||||||
except types.UnificationError as e:
|
except types.UnificationError as e:
|
||||||
printer = types.TypePrinter()
|
printer = types.TypePrinter()
|
||||||
|
|
||||||
if kind == 'generic':
|
if kind == "generic":
|
||||||
note1 = diagnostic.Diagnostic('note',
|
note1 = diagnostic.Diagnostic("note",
|
||||||
"expression of type {typea}",
|
"expression of type {typea}",
|
||||||
{"typea": printer.name(typea)},
|
{"typea": printer.name(typea)},
|
||||||
loca)
|
loca)
|
||||||
elif kind == 'expects':
|
elif kind == "expects":
|
||||||
note1 = diagnostic.Diagnostic('note',
|
note1 = diagnostic.Diagnostic("note",
|
||||||
"expression expecting an operand of type {typea}",
|
"expression expecting an operand of type {typea}",
|
||||||
{"typea": printer.name(typea)},
|
{"typea": printer.name(typea)},
|
||||||
loca)
|
loca)
|
||||||
|
|
||||||
note2 = diagnostic.Diagnostic('note',
|
note2 = diagnostic.Diagnostic("note",
|
||||||
"expression of type {typeb}",
|
"expression of type {typeb}",
|
||||||
{"typeb": printer.name(typeb)},
|
{"typeb": printer.name(typeb)},
|
||||||
locb)
|
locb)
|
||||||
|
|
||||||
if e.typea.find() == typea.find() and e.typeb.find() == typeb.find():
|
if e.typea.find() == typea.find() and e.typeb.find() == typeb.find():
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"cannot unify {typea} with {typeb}",
|
"cannot unify {typea} with {typeb}",
|
||||||
{"typea": printer.name(typea), "typeb": printer.name(typeb)},
|
{"typea": printer.name(typea), "typeb": printer.name(typeb)},
|
||||||
loca, [locb], notes=[note1, note2])
|
loca, [locb], notes=[note1, note2])
|
||||||
else: # give more detail
|
else: # give more detail
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"cannot unify {typea} with {typeb}: {fraga} is incompatible with {fragb}",
|
"cannot unify {typea} with {typeb}: {fraga} is incompatible with {fragb}",
|
||||||
{"typea": printer.name(typea), "typeb": printer.name(typeb),
|
{"typea": printer.name(typea), "typeb": printer.name(typeb),
|
||||||
"fraga": printer.name(e.typea), "fragb": printer.name(e.typeb)},
|
"fraga": printer.name(e.typea), "fragb": printer.name(e.typeb)},
|
||||||
|
@ -187,7 +187,7 @@ class Inferencer(algorithm.Transformer):
|
||||||
for typing_env in reversed(self.env_stack):
|
for typing_env in reversed(self.env_stack):
|
||||||
if name in typing_env:
|
if name in typing_env:
|
||||||
return typing_env[name]
|
return typing_env[name]
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"name '{name}' is not bound to anything", {"name":name}, loc)
|
"name '{name}' is not bound to anything", {"name":name}, loc)
|
||||||
self.engine.process(diag)
|
self.engine.process(diag)
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class Inferencer(algorithm.Transformer):
|
||||||
elif isinstance(node.n, float):
|
elif isinstance(node.n, float):
|
||||||
typ = types.TFloat()
|
typ = types.TFloat()
|
||||||
else:
|
else:
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"numeric type {type} is not supported", {"type": node.n.__class__.__name__},
|
"numeric type {type} is not supported", {"type": node.n.__class__.__name__},
|
||||||
node.loc)
|
node.loc)
|
||||||
self.engine.process(diag)
|
self.engine.process(diag)
|
||||||
|
@ -225,8 +225,8 @@ class Inferencer(algorithm.Transformer):
|
||||||
node = asttyped.ListT(type=types.TList(),
|
node = asttyped.ListT(type=types.TList(),
|
||||||
elts=node.elts, ctx=node.ctx, loc=node.loc)
|
elts=node.elts, ctx=node.ctx, loc=node.loc)
|
||||||
for elt in node.elts:
|
for elt in node.elts:
|
||||||
self._unify(node.type['elt'], elt.type,
|
self._unify(node.type["elt"], elt.type,
|
||||||
node.loc, elt.loc, kind='expects')
|
node.loc, elt.loc, kind="expects")
|
||||||
return node
|
return node
|
||||||
|
|
||||||
def visit_Subscript(self, node):
|
def visit_Subscript(self, node):
|
||||||
|
@ -236,7 +236,7 @@ class Inferencer(algorithm.Transformer):
|
||||||
loc=node.loc)
|
loc=node.loc)
|
||||||
# TODO: support more than just lists
|
# TODO: support more than just lists
|
||||||
self._unify(types.TList(node.type), node.value.type,
|
self._unify(types.TList(node.type), node.value.type,
|
||||||
node.loc, node.value.loc, kind='expects')
|
node.loc, node.value.loc, kind="expects")
|
||||||
return node
|
return node
|
||||||
|
|
||||||
# Visitors that just unify types
|
# Visitors that just unify types
|
||||||
|
@ -267,7 +267,7 @@ class Inferencer(algorithm.Transformer):
|
||||||
# Unsupported visitors
|
# Unsupported visitors
|
||||||
#
|
#
|
||||||
def visit_unsupported(self, node):
|
def visit_unsupported(self, node):
|
||||||
diag = diagnostic.Diagnostic('fatal',
|
diag = diagnostic.Diagnostic("fatal",
|
||||||
"this syntax is not supported", {},
|
"this syntax is not supported", {},
|
||||||
node.loc)
|
node.loc)
|
||||||
self.engine.process(diag)
|
self.engine.process(diag)
|
||||||
|
@ -301,7 +301,7 @@ class Printer(algorithm.Visitor):
|
||||||
return self.rewriter.rewrite()
|
return self.rewriter.rewrite()
|
||||||
|
|
||||||
def generic_visit(self, node):
|
def generic_visit(self, node):
|
||||||
if hasattr(node, 'type'):
|
if hasattr(node, "type"):
|
||||||
self.rewriter.insert_after(node.loc,
|
self.rewriter.insert_after(node.loc,
|
||||||
":%s".format(self.type_printer.name(node.type)))
|
":%s".format(self.type_printer.name(node.type)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue