Commit 2e607ccb authored by Yuki Shiino's avatar Yuki Shiino Committed by Commit Bot

bind-gen: Remove |renderer| argument in CodeNode.__init__

The |renderer| argument was introduced in the very early design,
but it turned out that it's not often used (except for testing).
This patch removes the argument and simplifies CodeNode and its
subclasses.

Bug: 839389
Change-Id: I434a13f5c4fd6bdc9cdf93ae50ec734f60359d06
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1906611
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: default avatarHitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714134}
parent b07e1bbf
......@@ -130,26 +130,22 @@ class CodeNode(object):
cls._gensym_seq_id += 1
return "gensym{}".format(cls._gensym_seq_id)
def __init__(self,
template_text=None,
template_vars=None,
renderer=None):
def __init__(self, template_text=None, template_vars=None):
assert template_text is None or isinstance(template_text, str)
assert template_vars is None or isinstance(template_vars, dict)
assert renderer is None or isinstance(renderer, MakoRenderer)
# The outer CodeNode or None iff this is a top-level node
self._outer = None
# The previous CodeNode if this is a Sequence or None
self._prev = None
# Mako's template text, bindings dict, and the renderer object
# Mako's template text, bindings dict
self._template_text = template_text
self._template_vars = {}
self._accumulator = None
self._accumulator = None # CodeGenAccumulator
self._renderer = renderer
self._renderer = None # MakoRenderer
self._render_state = CodeNode._RenderState()
self._is_rendering = False
......@@ -357,17 +353,14 @@ class LiteralNode(CodeNode):
magic applied.
"""
def __init__(self, literal_text, renderer=None):
def __init__(self, literal_text):
literal_text_gensym = CodeNode.gensym()
template_text = CodeNode.format_template(
"${{{literal_text}}}", literal_text=literal_text_gensym)
template_vars = {literal_text_gensym: literal_text}
CodeNode.__init__(
self,
template_text=template_text,
template_vars=template_vars,
renderer=renderer)
self, template_text=template_text, template_vars=template_vars)
class TextNode(CodeNode):
......@@ -379,8 +372,8 @@ class TextNode(CodeNode):
All template magics will be applied to |template_text|.
"""
def __init__(self, template_text, renderer=None):
CodeNode.__init__(self, template_text=template_text, renderer=renderer)
def __init__(self, template_text):
CodeNode.__init__(self, template_text=template_text)
class SequenceNode(CodeNode):
......@@ -388,11 +381,7 @@ class SequenceNode(CodeNode):
Represents a sequence of nodes.
"""
def __init__(self,
code_nodes=None,
separator=" ",
separator_last="",
renderer=None):
def __init__(self, code_nodes=None, separator=" ", separator_last=""):
assert isinstance(separator, str)
assert isinstance(separator_last, str)
......@@ -414,10 +403,7 @@ ${node}\\
template_vars = {element_nodes_gensym: element_nodes}
CodeNode.__init__(
self,
template_text=template_text,
template_vars=template_vars,
renderer=renderer)
self, template_text=template_text, template_vars=template_vars)
self._element_nodes = element_nodes
......@@ -489,17 +475,12 @@ class SymbolScopeNode(SequenceNode):
insert corresponding SymbolDefinitionNodes appropriately.
"""
def __init__(self,
code_nodes=None,
separator="\n",
separator_last="",
renderer=None):
def __init__(self, code_nodes=None, separator="\n", separator_last=""):
SequenceNode.__init__(
self,
code_nodes=code_nodes,
separator=separator,
separator_last=separator_last,
renderer=renderer)
separator_last=separator_last)
self._registered_code_symbols = set()
......@@ -730,7 +711,7 @@ class ConditionalExitNode(ConditionalNode):
where BODY ends with a return statement.
"""
def __init__(self, cond, body, body_likeliness, renderer=None):
def __init__(self, cond, body, body_likeliness):
assert isinstance(cond, CodeNode)
assert isinstance(body, SymbolScopeNode)
assert isinstance(body_likeliness, Likeliness.Level)
......@@ -751,10 +732,7 @@ if (${{{conditional}}}) {{
}
ConditionalNode.__init__(
self,
template_text=template_text,
template_vars=template_vars,
renderer=renderer)
self, template_text=template_text, template_vars=template_vars)
self._cond_node = cond
self._body_node = body
......@@ -803,8 +781,7 @@ class FunctionDefinitionNode(CodeNode):
return_type,
local_vars=None,
body=None,
comment=None,
renderer=None):
comment=None):
"""
Args:
name: Function name node, which may include nested-name-specifier
......@@ -856,10 +833,7 @@ ${{{return_type}}} ${{{name}}}(${{{arg_decls}}}) {{
}
CodeNode.__init__(
self,
template_text=template_text,
template_vars=template_vars,
renderer=renderer)
self, template_text=template_text, template_vars=template_vars)
self._body_node = body
......
......@@ -18,6 +18,9 @@ from .mako_renderer import MakoRenderer
class CodeNodeTest(unittest.TestCase):
def assertRenderResult(self, node, expected):
if node.renderer is None:
node.set_renderer(MakoRenderer())
def simplify(text):
return "\n".join(
[" ".join(line.split()) for line in text.split("\n")])
......@@ -32,24 +35,20 @@ class CodeNodeTest(unittest.TestCase):
Tests that, in LiteralNode, the special characters of template (%, ${},
etc) are not processed.
"""
renderer = MakoRenderer()
root = LiteralNode("<% x = 42 %>${x}", renderer=renderer)
root = LiteralNode("<% x = 42 %>${x}")
self.assertRenderResult(root, "<% x = 42 %>${x}")
def test_empty_literal_node(self):
renderer = MakoRenderer()
root = LiteralNode("", renderer=renderer)
root = LiteralNode("")
self.assertRenderResult(root, "")
def test_text_node(self):
"""Tests that the template language works in TextNode."""
renderer = MakoRenderer()
root = TextNode("<% x = 42 %>${x}", renderer=renderer)
root = TextNode("<% x = 42 %>${x}")
self.assertRenderResult(root, "42")
def test_empty_text_node(self):
renderer = MakoRenderer()
root = TextNode("", renderer=renderer)
root = TextNode("")
self.assertRenderResult(root, "")
def test_list_operations_of_sequence_node(self):
......@@ -57,8 +56,7 @@ class CodeNodeTest(unittest.TestCase):
Tests that list operations (insert, append, and extend) of SequenceNode
work just same as Python built-in list.
"""
renderer = MakoRenderer()
root = SequenceNode(separator=",", renderer=renderer)
root = SequenceNode(separator=",")
root.extend([
LiteralNode("2"),
LiteralNode("4"),
......@@ -75,8 +73,7 @@ class CodeNodeTest(unittest.TestCase):
def test_nested_sequence(self):
"""Tests nested SequenceNodes."""
renderer = MakoRenderer()
root = SequenceNode(separator=",", renderer=renderer)
root = SequenceNode(separator=",")
nested = SequenceNode(separator=",")
nested.extend([
LiteralNode("2"),
......@@ -95,8 +92,7 @@ class CodeNodeTest(unittest.TestCase):
Tests that use of SymbolNode inserts necessary SymbolDefinitionNode
appropriately.
"""
renderer = MakoRenderer()
root = SymbolScopeNode(separator_last="\n", renderer=renderer)
root = SymbolScopeNode(separator_last="\n")
root.register_code_symbols([
SymbolNode("var1", "int ${var1} = ${var2} + ${var3};"),
......@@ -119,8 +115,7 @@ int var1 = var2 + var3;
""")
def test_symbol_definition_with_exit_branches(self):
renderer = MakoRenderer()
root = SymbolScopeNode(separator_last="\n", renderer=renderer)
root = SymbolScopeNode(separator_last="\n")
root.register_code_symbols([
SymbolNode("var1", "int ${var1} = 1;"),
......@@ -167,8 +162,7 @@ var3;
""")
def test_symbol_definition_with_nested_exit_branches(self):
renderer = MakoRenderer()
root = SymbolScopeNode(separator_last="\n", renderer=renderer)
root = SymbolScopeNode(separator_last="\n")
root.register_code_symbols([
SymbolNode("var1", "int ${var1} = 1;"),
......@@ -221,8 +215,7 @@ if (true) {
""")
def test_function_definition_minimum(self):
renderer = MakoRenderer()
root = SymbolScopeNode(separator_last="\n", renderer=renderer)
root = SymbolScopeNode(separator_last="\n")
root.append(
FunctionDefinitionNode(
name=LiteralNode("blink::bindings::func"),
......@@ -237,8 +230,7 @@ void blink::bindings::func() {
""")
def test_function_definition_full(self):
renderer = MakoRenderer()
root = SymbolScopeNode(separator_last="\n", renderer=renderer)
root = SymbolScopeNode(separator_last="\n")
local_vars = [
SymbolNode("var1", "int ${var1} = 1;"),
......@@ -278,7 +270,8 @@ void blink::bindings::func(int arg1, int arg2) {
def test_template_error_handling(self):
renderer = MakoRenderer()
root = SymbolScopeNode(renderer=renderer)
root = SymbolScopeNode()
root.set_renderer(renderer)
root.append(
SymbolScopeNode([
......
......@@ -409,8 +409,6 @@ def make_install_interface_template_def(cg_context):
def run_example(web_idl_database, output_dirs):
renderer = MakoRenderer()
filename = 'v8_example.cc'
filepath = os.path.join(output_dirs['core'], filename)
......@@ -418,7 +416,8 @@ def run_example(web_idl_database, output_dirs):
cg_context = CodeGenContext(namespace=namespace)
root_node = SymbolScopeNode(separator_last="\n", renderer=renderer)
root_node = SymbolScopeNode(separator_last="\n")
root_node.set_renderer(MakoRenderer())
for attribute in namespace.attributes:
root_node.append(
......
Markdown is supported
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