Module: Mesa
Branch: master
Commit: 490621f0f2814ff1713c74f030acaff3f19cf8fb
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=490621f0f2814ff1713c74f030acaff3f19cf8fb

Author: Antia Puentes <[email protected]>
Date:   Tue Mar 17 19:12:23 2015 +0100

glsl: Update the #line behaviour on GLSL 3.30+ and GLSL ES+

From GLSL 3.30 and GLSL ES 1.00 on, after processing the line
directive (including its new-line), the implementation should
behave as if it is compiling at the line number passed as
argument. In previous versions, it behaved as if compiling
at the passed line number + 1.

Partially fixes https://bugs.freedesktop.org/show_bug.cgi?id=88815

Reviewed-by: Kenneth Graunke <[email protected]>

---

 src/glsl/glsl_lexer.ll |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
index f0e047e..2785ed1 100644
--- a/src/glsl/glsl_lexer.ll
+++ b/src/glsl/glsl_lexer.ll
@@ -187,6 +187,15 @@ HASH               ^{SPC}#{SPC}
                                    * one-based.
                                    */
                                   yylineno = strtol(ptr, &ptr, 0) - 1;
+
+                                   /* From GLSL 3.30 and GLSL ES on, after 
processing the
+                                    * line directive (including its new-line), 
the implementation
+                                    * will behave as if it is compiling at the 
line number passed
+                                    * as argument. It was line number + 1 in 
older specifications.
+                                    */
+                                   if (yyextra->is_version(330, 100))
+                                      yylineno--;
+
                                   yylloc->source = strtol(ptr, NULL, 0);
                                }
 {HASH}line{SPCP}{INT}{SPC}$    {
@@ -202,6 +211,14 @@ HASH               ^{SPC}#{SPC}
                                    * one-based.
                                    */
                                   yylineno = strtol(ptr, &ptr, 0) - 1;
+
+                                   /* From GLSL 3.30 and GLSL ES on, after 
processing the
+                                    * line directive (including its new-line), 
the implementation
+                                    * will behave as if it is compiling at the 
line number passed
+                                    * as argument. It was line number + 1 in 
older specifications.
+                                    */
+                                   if (yyextra->is_version(330, 100))
+                                      yylineno--;
                                }
 ^{SPC}#{SPC}pragma{SPCP}debug{SPC}\({SPC}on{SPC}\) {
                                  BEGIN PP;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to