error messages
authorClaus Gittinger <cg@exept.de>
Tue, 29 Aug 2006 19:18:38 +0200
changeset 1899 434971573b92
parent 1898 f1d3d58a0d63
child 1900 66c65b0abf72
error messages
STCCompilerInterface.st
--- a/STCCompilerInterface.st	Tue Aug 29 17:29:05 2006 +0200
+++ b/STCCompilerInterface.st	Tue Aug 29 19:18:38 2006 +0200
@@ -151,7 +151,7 @@
      command oFileName cFileName
      initName oldMethod newMethod ok status className sep class stcPath ccPath 
      errorStream errorMessages eMsg moduleFileName 
-     mapFileName libFileName pkg libDir incDir incDirArg|
+     mapFileName libFileName pkg libDir incDir incDirArg lNr|
 
     install ifFalse:[
         "/ cannot do it uninstalled. reason:
@@ -372,11 +372,13 @@
             ] ifFalse:[
                 errorMessages := 'errorOutput' asFilename contents.
                 errorMessages notNil ifTrue:[
+                    errorMessages := errorMessages reject:[:line | line includesString:'Warning:'].
+
                     errorMessages size > 20 ifTrue:[
-errorMessages := errorMessages select:[:line | line asLowercase startsWith:'error'].
-errorMessages size > 20 ifTrue:[
-                        errorMessages := (errorMessages copyTo:20) copyWith:'... more messages skipped'
-].
+                        errorMessages := errorMessages select:[:line | line asLowercase startsWith:'error'].
+                        errorMessages size > 20 ifTrue:[
+                            errorMessages := (errorMessages copyTo:20) copyWith:'... more messages skipped'
+                        ].
                     ].
 "/                    errorMessages := errorMessages collect:[:line |
 "/                        (line startsWith:(stFileName , ':')) ifTrue:[
@@ -385,21 +387,42 @@
 "/                            line
 "/                        ]
 "/                      ].
-                    errorMessages := errorMessages asString
                 ].
                 errorMessages isNil ifTrue:[
-                    errorMessages := ''
+                    errorMessages := #('')
                 ].
+
+                "/ try to extract a line number"
+                (errorMessages contains:[:line | line includesString:'Borland']) ifTrue:[
+                    |i i2 s|
+                    i := errorMessages findFirst:[:l | l startsWith:(cFileName,':')].
+                    i ~~ 0 ifTrue:[
+                        ((errorMessages at:i+1) startsWith:'Error') ifTrue:[
+                            i2 := (errorMessages at:i+1) indexOfSubCollection:(stFileName).
+                            i2 ~~ 0 ifTrue:[
+                                s := (errorMessages at:i+1) copyFrom:(i2+stFileName size+1).
+                                s := s readStream.
+                                lNr := Integer readFrom:s.
+                                s skipSeparators.
+                            ].    
+                        ]
+                    ].
+                ].
+
                 errorMessages isEmpty ifTrue:[
-                    eMsg := 'STC / CC error during compilation:\\unspecified error' withCRs
+                    eMsg := 'Error during compilation:\\Unspecified error (no output)' withCRs
                 ] ifFalse:[
-                    eMsg := 'STC / CC error during compilation:\\'withCRs,errorMessages
+                    eMsg := 'Error during compilation:\\' withCRs ,
+                            (errorMessages asStringCollection asString).
                 ].
                 "/ eMsg := eMsg withCRs
             ].
             originator activityNotification:'compilation failed'.
-            originator parseError:eMsg position:1.
-
+            lNr notNil ifTrue:[
+                originator parseError:eMsg line:lNr
+            ] ifFalse:[
+                originator parseError:eMsg position:1.
+            ].
             originator activityNotification:''.
             ^ #Error
         ].
@@ -644,7 +667,7 @@
 !STCCompilerInterface class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/STCCompilerInterface.st,v 1.3 2006-02-20 09:10:05 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/STCCompilerInterface.st,v 1.4 2006-08-29 17:18:38 cg Exp $'
 ! !
 
 STCCompilerInterface initialize!