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