tools/linguist/lupdate/java.cpp
changeset 33 3e2da88830cd
parent 18 2f34d5167611
child 37 758a864f9613
--- a/tools/linguist/lupdate/java.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/tools/linguist/lupdate/java.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -51,6 +51,8 @@
 #include <QtCore/QString>
 #include <QtCore/QTextCodec>
 
+#include <iostream>
+
 #include <ctype.h>
 
 QT_BEGIN_NAMESPACE
@@ -107,6 +109,11 @@
 static QStack<Scope*> yyScope;
 static QString yyDefaultContext;
 
+std::ostream &yyMsg(int line = 0)
+{
+    return std::cerr << qPrintable(yyFileName) << ':' << (line ? line : yyLineNo) << ": ";
+}
+
 static QChar getChar()
 {
     if (yyInPos >= yyInStr.size())
@@ -189,10 +196,7 @@
                     while ( !metAsterSlash ) {
                         yyCh = getChar();
                         if ( yyCh == EOF ) {
-                            qFatal( "%s: Unterminated Java comment starting at"
-                                    " line %d\n",
-                                    qPrintable(yyFileName), yyLineNo );
-
+                            yyMsg() << "Unterminated Java comment.\n";
                             return Tok_Comment;
                         }
 
@@ -228,8 +232,8 @@
                                 else {
                                     int sub(yyCh.toLower().toAscii() - 87);
                                     if( sub > 15 || sub < 10) {
-                                        qFatal( "%s:%d: Invalid Unicode",
-                                            qPrintable(yyFileName), yyLineNo );
+                                        yyMsg() << "Invalid Unicode value.\n";
+                                        break;
                                     }
                                     unicode += sub;
                                 }
@@ -251,8 +255,7 @@
                 }
 
                 if ( yyCh != QLatin1Char('"') )
-                    qFatal( "%s:%d: Unterminated string",
-                        qPrintable(yyFileName), yyLineNo );
+                    yyMsg() << "Unterminated string.\n";
 
                 yyCh = getChar();
 
@@ -365,9 +368,8 @@
         if (yyTok == Tok_String)
             s += yyString;
         else {
-            qWarning( "%s:%d: String used in translation can only contain strings"
-                " concatenated with other strings, not expressions or numbers.",
-                qPrintable(yyFileName), yyLineNo );
+            yyMsg() << "String used in translation can contain only literals"
+                       " concatenated with other literals, not expressions or numbers.\n";
             return false;
         }
         yyTok = getToken();
@@ -475,8 +477,8 @@
                 yyScope.push(new Scope(yyIdent, Scope::Clazz, yyLineNo));
             }
             else {
-                qFatal( "%s:%d: Class must be followed by a classname",
-                                          qPrintable(yyFileName), yyLineNo );
+                yyMsg() << "'class' must be followed by a class name.\n";
+                break;
             }
             while (!match(Tok_LeftBrace)) {
                 yyTok = getToken();
@@ -547,8 +549,7 @@
 
         case Tok_RightBrace:
             if ( yyScope.isEmpty() ) {
-                qFatal( "%s:%d: Unbalanced right brace in Java code\n",
-                        qPrintable(yyFileName), yyLineNo );
+                yyMsg() << "Excess closing brace.\n";
             }
             else
                 delete (yyScope.pop());
@@ -577,8 +578,7 @@
                         yyPackage.append(QLatin1String("."));
                         break;
                     default:
-                         qFatal( "%s:%d: Package keyword should be followed by com.package.name;",
-                                          qPrintable(yyFileName), yyLineNo );
+                         yyMsg() << "'package' must be followed by package name.\n";
                          break;
                 }
                 yyTok = getToken();
@@ -591,11 +591,9 @@
     }
 
     if ( !yyScope.isEmpty() )
-        qFatal( "%s:%d: Unbalanced braces in Java code\n",
-                 qPrintable(yyFileName), yyScope.top()->line );
+        yyMsg(yyScope.top()->line) << "Unbalanced opening brace.\n";
     else if ( yyParenDepth != 0 )
-        qFatal( "%s:%d: Unbalanced parentheses in Java code\n",
-                 qPrintable(yyFileName), yyParenLineNo );
+        yyMsg(yyParenLineNo) << "Unbalanced opening parenthesis.\n";
 }