[ooo-build-commit] .: patches/dev300

Cédric Bosdonnat cbosdo at kemper.freedesktop.org
Sun Sep 12 14:22:55 PDT 2010


 patches/dev300/apply                  |    1 
 patches/dev300/idlc-error-offset.diff |  235 ++++++++++++++++++++++++++++++++++
 2 files changed, 236 insertions(+)

New commits:
commit a3a35ee9936d6c19a5ff36fa14bb5dd9f396bbfc
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date:   Sun Sep 12 23:21:17 2010 +0200

    Fixed i#81780: adding offset info to idlc errors

diff --git a/patches/dev300/apply b/patches/dev300/apply
index 4cd94c5..9cff46d 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -1245,6 +1245,7 @@ psprint_config-no-orig.diff, jholesov
 [ SdkFixes ]
 # fix configure.pl
 odk-configure-honour-ure-link.diff
+idlc-error-offset.diff, cbosdo, i#81780
 
 [ DebianOnly ]
 open-url-support-iceanimals.diff
diff --git a/patches/dev300/idlc-error-offset.diff b/patches/dev300/idlc-error-offset.diff
new file mode 100644
index 0000000..e8ef4e8
--- /dev/null
+++ b/patches/dev300/idlc-error-offset.diff
@@ -0,0 +1,235 @@
+Add the offset number on the idlc error messages
+
+From: Cédric Bosdonnat <cedricbosdo at openoffice.org>
+
+
+---
+
+ idlc/inc/idlc/idlc.hxx       |    8 ++++++++
+ idlc/source/errorhandler.cxx |   15 ++++++++++++---
+ idlc/source/idlc.cxx         |    2 ++
+ idlc/source/parser.y         |    7 ++++++-
+ idlc/source/scanner.ll       |   35 ++++++++++++++++++++++++-----------
+ 5 files changed, 52 insertions(+), 15 deletions(-)
+
+
+diff --git idlc/inc/idlc/idlc.hxx idlc/inc/idlc/idlc.hxx
+index 051a9e6..b7ae506 100644
+--- idlc/inc/idlc/idlc.hxx
++++ idlc/inc/idlc/idlc.hxx
+@@ -102,6 +102,12 @@ public:
+         { m_warningCount++; }
+     sal_uInt32 getLineNumber()
+         { return m_lineNumber; }
++    sal_uInt32 getOffsetStart()
++        { return m_offsetStart; }
++    sal_uInt32 getOffsetEnd()
++        { return m_offsetEnd; }
++    void setOffset( sal_uInt32 start, sal_uInt32 end)
++        { m_offsetStart = start; m_offsetEnd = end; }
+     void setLineNumber(sal_uInt32 lineNumber)
+         { m_lineNumber = lineNumber; }
+     void incLineNumber()
+@@ -136,6 +142,8 @@ private:
+     sal_uInt32			m_errorCount;
+     sal_uInt32			m_warningCount;
+     sal_uInt32			m_lineNumber;
++    sal_uInt32			m_offsetStart;
++    sal_uInt32			m_offsetEnd;
+     ParseState			m_parseState;
+     StringSet			m_includes;
+ };
+diff --git idlc/source/errorhandler.cxx idlc/source/errorhandler.cxx
+index a9006b9..de960ad 100644
+--- idlc/source/errorhandler.cxx
++++ idlc/source/errorhandler.cxx
+@@ -488,7 +488,7 @@ static OString flagToString(sal_uInt32 flag)
+     return flagStr;
+ }	
+ 
+-static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber)
++static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber, sal_uInt32 start, sal_uInt32 end)
+ {
+     OString file;
+     if ( idlc()->getFileName() == idlc()->getRealFileName() )
+@@ -496,14 +496,23 @@ static void errorHeader(ErrorCode eCode, sal_Int32 lineNumber)
+     else
+         file = idlc()->getFileName();
+     
+-    fprintf(stderr, "%s(%lu) : %s", file.getStr(),
++    fprintf(stderr, "%s:%lu [%lu:%lu] : %s", file.getStr(),
+             sal::static_int_cast< unsigned long >(lineNumber),
++            sal::static_int_cast< unsigned long >(start),
++            sal::static_int_cast< unsigned long >(end),
+             errorCodeToMessage(eCode));		
+ }
++
++static void errorHeader(ErrorCode eCode, sal_uInt32 lineNumber)
++{
++    errorHeader(eCode, lineNumber,
++            idlc()->getOffsetStart(), idlc()->getOffsetEnd());
++}
+     
+ static void errorHeader(ErrorCode eCode)
+ {
+-    errorHeader(eCode, idlc()->getLineNumber());
++    errorHeader(eCode, idlc()->getLineNumber(),
++            idlc()->getOffsetStart(), idlc()->getOffsetEnd());
+ }	
+ 
+ static void warningHeader(WarningCode wCode)
+diff --git idlc/source/idlc.cxx idlc/source/idlc.cxx
+index 1cb6ed2..1c75d78 100644
+--- idlc/source/idlc.cxx
++++ idlc/source/idlc.cxx
+@@ -219,6 +219,8 @@ Idlc::Idlc(Options* pOptions)
+     , m_errorCount(0)
+     , m_warningCount(0)
+     , m_lineNumber(0)
++    , m_offsetStart(0)
++    , m_offsetEnd(0)
+     , m_parseState(PS_NoState)
+ {
+     m_pScopes = new AstStack();
+diff --git idlc/source/parser.y idlc/source/parser.y
+index 8da9c7a..b6c56c6 100644
+--- idlc/source/parser.y
++++ idlc/source/parser.y
+@@ -103,13 +103,16 @@
+ 
+ #include <algorithm>
+ #include <vector>
++
++#include <parser.hxx>
+     
+ using namespace ::rtl;
+ 
+ #define YYDEBUG 1
+ #define YYERROR_VERBOSE 1
++#define YYLEX_PARAM &yylval, &yylloc
+ 
+-extern int yylex(void);
++extern int yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param );
+ void yyerror(char const *);
+ 
+ void checkIdentifier(::rtl::OString* id)
+@@ -262,6 +265,7 @@ bool includes(AstDeclaration const * type1, AstDeclaration const * type2) {
+ #pragma warning(disable: 4273 4701 4706)
+ #endif
+ %}
++%locations
+ /*
+  * Declare the type of values in the grammar
+  */
+@@ -972,6 +976,7 @@ attribute_get_raises:
+             rtl::OStringToOUString(
+                 idlc()->getDocumentation(), RTL_TEXTENCODING_UTF8));
+         $$.exceptions = $2;
++        int line = @2.first_line;
+     }
+     ;
+ 
+diff --git idlc/source/scanner.ll idlc/source/scanner.ll
+index 4125195..44ce74d 100644
+--- idlc/source/scanner.ll
++++ idlc/source/scanner.ll
+@@ -46,12 +46,21 @@
+ 
+ #include "attributeexceptions.hxx"
+ 
++
+ class AstExpression;
+ class AstArray;
+ class AstMember;
+ 
+ #include <parser.hxx>
+ 
++/* handle locations */
++int yycolumn = 1;
++
++#define YY_USER_ACTION yylloc->first_line = yylloc->last_line = yylineno; \
++    yylloc->first_column = yycolumn; yylloc->last_column = yycolumn+yyleng-1; \
++    idlc()->setOffset(yylloc->first_column, yylloc->last_column); \
++    yycolumn += yyleng;
++
+ sal_Int32		beginLine = 0;
+ ::rtl::OString	docu;
+ 
+@@ -225,6 +234,7 @@ static void parseLineAndFile(sal_Char* pBuf)
+ 	for (; *r != '\0' && *r != ' ' && *r != '\t'; r++) ;
+ 	*r++ = 0;
+ 	idlc()->setLineNumber((sal_uInt32)atol(h));
++    yylineno = atol(h);
+ 
+ 	/* Find file name, if present */
+ 	for (; *r != '"'; r++)
+@@ -260,6 +270,7 @@ static void parseLineAndFile(sal_Char* pBuf)
+ #endif
+ %}
+ 
++%option bison-bridge bison-locations
+ %option noyywrap
+ %option never-interactive
+ 
+@@ -281,8 +292,10 @@ IDENTIFIER      ("_"?({ALPHA}|{DIGIT})+)*
+ %%
+ 
+ [ \t\r]+	; /* eat up whitespace */
+-[\n] 		{
+-	idlc()->incLineNumber();
++[\n]           {
++       idlc()->incLineNumber();
++       yycolumn = 1;
++       yylineno++;
+ }
+ 
+ attribute       return IDL_ATTRIBUTE;
+@@ -347,39 +360,39 @@ published       return IDL_PUBLISHED;
+ "..."           return IDL_ELLIPSIS;
+ 
+ ("-")?{INT_LITERAL}+(l|L|u|U)?    {
+-            	return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
++            	return asciiToInteger(yytext, &yylval->ival, &yylval->uval);
+             }
+ 
+ ("-")?{OCT_LITERAL}+(l|L|u|U)?    {
+-            	return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
++            	return asciiToInteger(yytext, &yylval->ival, &yylval->uval);
+             }
+ 
+ ("-")?{HEX_LITERAL}+(l|L|u|U)?    {
+-            	return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
++            	return asciiToInteger(yytext, &yylval->ival, &yylval->uval);
+             }
+ 
+ ("-")?{DIGIT}+(e|E){1}(("+"|"-")?{DIGIT}+)+(f|F)?	|
+ ("-")?"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?	|
+ ("-")?{DIGIT}*"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?        {
+-            	yylval.dval = asciiToFloat( yytext );
++            	yylval->dval = asciiToFloat( yytext );
+ 				return IDL_FLOATING_PT_LITERAL;
+             }
+ 
+ {IDENTIFIER}	{
+-				yylval.sval = new ::rtl::OString(yytext);
+-				return IDL_IDENTIFIER;
++				yylval->sval = new ::rtl::OString(yytext);
++   				return IDL_IDENTIFIER;
+ 			}
+ 
+ \<\<  	{
+-		yylval.strval = yytext;
++		yylval->strval = yytext;
+ 		return IDL_LEFTSHIFT;
+ 	}
+ \>\>	{
+-		yylval.strval = yytext;
++		yylval->strval = yytext;
+ 		return IDL_RIGHTSHIFT;
+ 	}
+ \:\:	{
+-		yylval.strval = yytext;
++		yylval->strval = yytext;
+ 		return IDL_SCOPESEPARATOR;
+ 	}
+ 


More information about the ooo-build-commit mailing list