summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/codeparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/codeparser.py')
-rw-r--r--bitbake/lib/bb/codeparser.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/bitbake/lib/bb/codeparser.py b/bitbake/lib/bb/codeparser.py
index 6c9a42dc39..577b4271cf 100644
--- a/bitbake/lib/bb/codeparser.py
+++ b/bitbake/lib/bb/codeparser.py
@@ -28,6 +28,10 @@ def check_indent(codestr):
28 return codestr 28 return codestr
29 29
30 if codestr[i-1] == "\t" or codestr[i-1] == " ": 30 if codestr[i-1] == "\t" or codestr[i-1] == " ":
31 if codestr[0] == "\n":
32 # Since we're adding a line, we need to remove one line of any empty padding
33 # to ensure line numbers are correct
34 codestr = codestr[1:]
31 return "if 1:\n" + codestr 35 return "if 1:\n" + codestr
32 36
33 return codestr 37 return codestr
@@ -248,7 +252,7 @@ class PythonParser():
248 self.unhandled_message = "in call of %s, argument '%s' is not a string literal" 252 self.unhandled_message = "in call of %s, argument '%s' is not a string literal"
249 self.unhandled_message = "while parsing %s, %s" % (name, self.unhandled_message) 253 self.unhandled_message = "while parsing %s, %s" % (name, self.unhandled_message)
250 254
251 def parse_python(self, node): 255 def parse_python(self, node, lineno=0, filename="<string>"):
252 if not node or not node.strip(): 256 if not node or not node.strip():
253 return 257 return
254 258
@@ -270,7 +274,9 @@ class PythonParser():
270 self.contains[i] = set(codeparsercache.pythoncacheextras[h].contains[i]) 274 self.contains[i] = set(codeparsercache.pythoncacheextras[h].contains[i])
271 return 275 return
272 276
273 code = compile(check_indent(str(node)), "<string>", "exec", 277 # We can't add to the linenumbers for compile, we can pad to the correct number of blank lines though
278 node = "\n" * int(lineno) + node
279 code = compile(check_indent(str(node)), filename, "exec",
274 ast.PyCF_ONLY_AST) 280 ast.PyCF_ONLY_AST)
275 281
276 for n in ast.walk(code): 282 for n in ast.walk(code):