You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by kn...@apache.org on 2016/05/12 16:39:06 UTC
svn commit: r1743525 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/parser/PigMacro.java
test/org/apache/pig/test/TestMacroExpansion.java
Author: knoguchi
Date: Thu May 12 16:39:06 2016
New Revision: 1743525
URL: http://svn.apache.org/viewvc?rev=1743525&view=rev
Log:
PIG-4888: Line number off when reporting syntax error inside a macro (knoguchi)
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/parser/PigMacro.java
pig/trunk/test/org/apache/pig/test/TestMacroExpansion.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1743525&r1=1743524&r2=1743525&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu May 12 16:39:06 2016
@@ -119,6 +119,8 @@ PIG-4639: Add better parser for Apache H
BUG FIXES
+PIG-4888: Line number off when reporting syntax error inside a macro (knoguchi)
+
PIG-3772: Syntax error when casting an inner schema of a bag and line break involved (ssvinarchukhorton via knoguchi)
PIG-4892: removing /tmp/output before UT (daijy)
Modified: pig/trunk/src/org/apache/pig/parser/PigMacro.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/PigMacro.java?rev=1743525&r1=1743524&r2=1743525&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/PigMacro.java (original)
+++ pig/trunk/src/org/apache/pig/parser/PigMacro.java Thu May 12 16:39:06 2016
@@ -219,6 +219,7 @@ class PigMacro {
try {
result = parser.query();
} catch (RecognitionException e) {
+ e.line += startLine -1;
String msg = (fileName == null) ? parser.getErrorHeader(e)
: QueryParserUtils.generateErrorHeader(e, fileName);
msg += " " + parser.getErrorMessage(e, parser.getTokenNames());
@@ -236,7 +237,7 @@ class PigMacro {
if (!macroDefNodes.isEmpty()) {
String fname = ((PigParserNode)ast).getFileName();
String msg = getErrorMessage(fname, ast.getLine(),
- "Invalide macro definition", "macro '" + name
+ "Invalid macro definition", "macro '" + name
+ "' contains macro definition.\nmacro content: "
+ body);
throw new ParserException(msg);
@@ -273,6 +274,7 @@ class PigMacro {
try {
result2 = walker.query();
} catch (RecognitionException e) {
+ e.line += startLine - 1;
String msg = walker.getErrorHeader(e) + " "
+ walker.getErrorMessage(e, walker.getTokenNames());
String msg2 = getErrorMessage(file, line, "Failed to mask macro '"
Modified: pig/trunk/test/org/apache/pig/test/TestMacroExpansion.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestMacroExpansion.java?rev=1743525&r1=1743524&r2=1743525&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestMacroExpansion.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestMacroExpansion.java Thu May 12 16:39:06 2016
@@ -1187,6 +1187,33 @@ public class TestMacroExpansion {
validateFailure(sb.toString(), expectedErr, "at");
}
+
+ @Test
+ public void lineNumberTest3() throws Throwable {
+ StringBuilder sb = new StringBuilder();
+ sb.append("/*\n" +
+ " * extra lines to offset the line number for the macro\n" +
+ " *\n" +
+ " *\n" +
+ " */\n" +
+ "\n" +
+ "\n" +
+ "define mymacro() returns void {\n" +
+ "A = load 'x' as ( u:int, v:long, w:bytearray);\n" +
+ "B = limit A 100;\n" +
+ "C = filter_typo B by 2 > 1;\n" +
+ "D = load 'y' as (d1, d2);\n" +
+ "E = join C by ( $0, $1 ), D by ( d1, d2 ) using 'replicated' parallel 16;\n" +
+ "F = store E into 'output';\n" +
+ "};\n" +
+ "mymacro();\n"
+ );
+
+ String expectedErr =
+ "/myscript.pig, line 11, column 0> Syntax error, unexpected symbol at or near 'C'";
+
+ validateFailure(sb.toString(), expectedErr, "/myscript.pig, line ");
+ }
//see Pig-2184
@Test