* Introduction  -*-compilation-*-

This shows the different kinds of messages compile recognizes by default and
how they are rendered.  It is intended both to help you decide which matchers
you need and as a test of the matchers.  Move the mouse over a colored part or
use `compilation-message-face', to see how much text was actually matched.

The important part is the symbol(s) line at the beginning of each entry.
These are the symbols you can customize `compilation-error-regexp-alist' for,
to match the messages shown in that entry.  A few complex cases have more than
one symbol, which should be selected together.


* Absoft FORTRAN 77 Compiler 3.1.3

symbol: absoft

Error on line 3 of t.f: Execution error unclassifiable statement
Line 45 of "foo.c": bloofle undefined
error on line 19 of fplot.f: spelling error?
warning on line 17 of fplot.f: data type is undefined for variable d


* Ada & Mpatrol (memory leak debugger)

symbol: ada

This matches only the end of line, the beginning is covered by GNU style.

foo.adb:61:11:  [...] in call to size declared at foo.ads:11
	0x8008621 main+16 at error.c:17


* IBM AIX PS/2 C version 1.1

symbol: aix

****** Error number 140 in line 8 of file errors.c ******


* Ant Java: works at least for jikes and javac

symbol: ant

The regexps found on http://ant.apache.org/faq.html, and since integrated in
both Emacsen, were hairy.  Why so many numbers for jikes -- is one a column
number?

    [javac] /src/DataBaseTestCase.java:27: unreported exception ...
    [javac] /src/DataBaseTestCase.java:49: warning: finally clause cannot complete normally
    [jikes]  foo.java:3:5:7:9: blah blah


* Bash v2

symbol: bash

a.sh: line 1: ls-l: command not found


* Borland C++, C++Builder

symbol: borland

Error ping.c 15: Unable to open include file 'sys/types.h'
Warning ping.c 68: Call to function 'func' with no prototype
Error E2010 ping.c 15: Unable to open include file 'sys/types.h'
Warning W1022 ping.c 68: Call to function 'func' with no prototype


* Caml & Python

symbol: caml

File "foobar.ml", lines 5-8, characters 20-155: blah blah
File "F:\ocaml\sorting.ml", line 65, characters 2-145:
Warning: this expression should have type unit.
  File "/usr/share/gdesklets/display/TargetGauge.py", line 41, in add_children
  File \lib\python\Products\PythonScripts\PythonScript.py, line 302, in _exec
  File "/tmp/foo.py", line 10


* Apollo cc, 4.3BSD fc & IBM RS6000/AIX xlc compiler & Microtec mcc68k & GNAT (July 94)

symbol: comma

"foo.f", line 3: Error: syntax error near end of statement
"vvouch.c", line 19.5: 1506-046 (S) Syntax error.
"foo.c", line 32 pos 1; (E) syntax error; unexpected symbol: "lossage"
"foo.adb", line 2(11): warning: file name does not match ...
"src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment.


* EDG C/C++

symbol: edg-1 edg-2

build/intel/debug/../../../struct.cpp(42): error: identifier "foo" is undefined
build/intel/debug/../../../struct.cpp(44): warning #1011: missing return statement at end of ...
build/intel/debug/../../../iptr.h(302): remark #981: operands are evaluated in unspecified order
          detected during ... at line 62 of "build/intel/debug/../../../trace.h"


* EPC F90 compiler

symbol: epc

Error 24 at (2:progran.f90) : syntax error


* Fortran checker

symbols: ftnchek

    Dummy arg W in module SUBA line 8 file arrayclash.f is array
    L4 used at line 55 file test/assign.f; never set
Warning near line 10 file arrayclash.f: Module contains no executable
Nonportable usage near line 31 col 9 file assign.f: mixed default and explicit


* IAR Systems C Compiler

symbol: iar

"foo.c",3  Error[32]: Error message
"foo.c",3  Warning[32]: Error message


* IBM C/C++ Tools 2.01

symbol: ibm

foo.c(2:0) : informational EDC0804: Function foo is not referenced.
foo.c(3:8) : warning EDC0833: Implicit return statement encountered.
foo.c(5:5) : error EDC0350: Syntax error.


* Ultrix MIPS RISC CC, DEC AXP OSF/1 cc, IRIX 5.2 & NAG Fortran

symbol: irix

ccom: Error: foo.c, line 2: syntax error
cc: Severe: /src/Python-2.3.3/Modules/_curses_panel.c, line 17: Cannot find file <panel.h> ...
cc: Info: foo.c, line 27: ...
cfe: Warning 712: foo.c, line 2: illegal combination of pointer and ...
cfe: Warning 600: xfe.c: 170: Not in a conditional directive while ...
/usr/lib/cmplrs/cc/cfe: Error: foo.c: 1: blah blah
/usr/lib/cmplrs/cc/cfe: warning: foo.c: 1: blah blah
foo bar: baz.f, line 27: ...


* Java Exception & Valgrind (memory debugger for x86 GNU/Linux)

symbol: java

Register 6 contains wrong type
	at org.foo.ComponentGateway.doGet(ComponentGateway.java:172)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
==1332== Invalid write of size 1
==1332==    at 0x4040743C: System::getErrorString() (../src/Lib/System.cpp:217)
==1332==    by 0x8008621: main (vtest.c:180)


* IBM jikes

symbols: jikes-file jikes-line

Jikes separates file names from the actual error messages.  For visual
feedback the underline and the word "Error" on the 3rd line is fontified like
a file name would be.

Found 2 semantic errors compiling "../javax/swing/BorderFactory.java":

   150.               case '{':
                           <->
*** Error: The type of this expression, "char", is not ...

   312.     return new CompoundBorder(outside, inside);
                   <--------------------------------->
*** Error: No match was found for constructor ...

Issued 1 semantic warning compiling "java/awt/Toolkit.java":

   504. void imgProduceImage( ImageNativeProducer prod, Ptr imgData);
                              <----------------->
*** Warning: The type "ImageNativeProducer" is defined ...


* GCC include message

symbol: gcc-include

The last file, i.e. the one you are compiling, is the interesting one.

In file included from /usr/include/c++/3.3/backward/warn.h:4,
                 from /usr/include/c++/3.3/backward/iostream.h:31,
                 from test_clt.cc:1:


* GNU style

symbol: gnu

foo.c:8: message
../foo.c:8: W: message
/tmp/foo.c:8:warning message
foo/bar.py:8: FutureWarning message
foo.py:8: RuntimeWarning message
foo.c:8:I: message
foo.c:8.23: info: message
foo.c:8:23:information: message
foo.c:8.23-45: Informational: message
foo.c:8-23: message
foo.c:8-45.3: message
foo.c:8.23-9.1: message
jade:dbcommon.dsl:133:17:E: missing argument for function call
G:/cygwin/dev/build-myproj.xml:54: Compiler Adapter 'javac' can't be found.
file:G:/cygwin/dev/build-myproj.xml:54: Compiler Adapter 'javac' can't be found.
{standard input}:27041: Warning: end of file not at end of a line; newline inserted


* Lucid Compiler, lcc 3.x

symbol: lcc

E, file.cc(35,52) Illegal operation on pointers
W, file.cc(36,52) blah blah


* makepp 1.20

symbol: makepp

makepp: Scanning `/foo/bar.c'
makepp: warning: bla bla `/foo/bar.c' and `/foo/bar.h'
makepp: bla bla `/foo/Makeppfile:12' bla
makepp: bla bla `/foo/bar.c' and `/foo/bar.h'


* MIPS lint; looks good for SunPro lint also

symbols: mips-1 mips-2

This can match multiple times on a line.

TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomon.c due to truncation
name defined but never used: LinInt in cmap_calc.c(199)


* Microsoft C/C++

symbol: msft

This used to be less selective and allowed characters other than parens around
the line number, but that caused confusion for GNU-style error messages.  This
used to reject spaces and dashes in file names, but they are valid now; so I
made it more strict about the error message that follows.

keyboard handler.c(537) : warning C4005: 'min' : macro redefinition
d:\tmp\test.c(23) : error C2143: syntax error : missing ';' before 'if'


* Oracle pro*c

symbol: oracle

This stupid precompiler wraps lines at column 80 in the middle of a file name.
There is no obvious way of detecting this or turning it off.  But if you
delete the newline (probably needs M-x toggle-read-only), the file name will
automatically be reparsed, so that you can then go there.

Semantic error at line 528, column 5, file erosacqdb.pc:
Error at line 41, column 10 in file /usr/src/sb/ODBI_BHP.hpp
PCC-02150: error at line 49, column 27 in file /usr/src/sb/ODBI_dxfgh.pc
PCC-00003: invalid SQL Identifier at column name in line 12 of file /usr/src/sb/ODBI_BHP.hpp
PCC-00004: mismatched IF/ELSE/ENDIF block at line 27 in file /usr/src/sb/ODBI_BHP.hpp
PCC-02151: line 21 column 40 file /usr/src/sb/ODBI_BHP.hpp:


* Perl

symbol: perl

syntax error at automake line 922, near "':'"
Died at test.pl line 27.
store::odrecall('File_A', 'x2') called at store.pm line 90


* RXP

symbol: rxp

GPL XML validator at http://www.cogsci.ed.ac.uk/~richard/rxp.html

Error: Mismatched end tag: expected </geroup>, got </group>
in unnamed entity at line 71 char 8 of file:///home/reto/test/group.xml
Warning: Start tag for undeclared element geroup
in unnamed entity at line 4 char 8 of file:///home/reto/test/group.xml


* Sparc Pascal

symbols: sparc-pascal-file sparc-pascal-line sparc-pascal-example

These messages don't contain a file name.  Instead the compiler gives a
message whenever the file being compiled is changed.  For visual feedback the
error code is fontified like a file name would be.

Thu May 14 10:46:12 1992  mom3.p:
          20      linjer      : array[1..4] of linje;
w 18480-----------^---  Inserted ';'
          20      linjer      : array[1..4] of linje;
e 18480-----------^---  Inserted ';'
w 18520 line 61 -  0 is undefined
E 18520 line 61 -  0 is undefined


* SGI IRIX MipsPro 7.3 & Sun F90 & Cray C

symbol: sun

cc-1020 CC: REMARK File = CUI_App.h, Line = 735
cc-1070 cc: WARNING File = linkl.c, Line = 38
cf90-113 f90comp: ERROR NSE, File = Hoved.f90, Line = 16, Column = 3


* Sun Ada (VADS, Solaris)

symbol: sun-ada

/home3/xdhar/rcds_rc/main.a, line 361, char 6:syntax error: "," inserted


* 4.3BSD grep, cc, lint

symbol: 4bsd

/usr/src/foo/foo.c(8): warning: w may be used before set
/usr/src/foo/foo.c(9): error: w is used before set
strcmp: variable # of args. llib-lc(359)  ::  /usr/src/foo/foo.c(8)
bloofle defined( /users/wolfgang/foo.c(4) ), but never used


* GCOV (test coverage program)

symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line 

        -:    0:Source:foo.c
        -:    0:Object:foo.bb
        -:    1:/* $ gcc -fprofile-arcs -ftest-coverage foo.c 
        -:    2:   $ ./a.out
        -:    3:   $ gcov foo.c
        -:    4:   LANG=C gcov foo.c
        -:    5:   62.50% of 8 lines executed in file foo.c
        -:    6:   Creating foo.c.gcov.*/
        -:    7:int
        -:    8:main(int argc, char ** argv)
        1:    9:{
        1:   10:  int r;
        1:   11:  if (argc == 1)
        1:   12:    r = 1;
    #####:   13:  else if (argc == 2)
    #####:   14:    r = 2;
        -:   15:  else 
    #####:   16:    r = 0;
        1:   17:  return r;
        -:   18:} 


* Directory tracking

Directories are matched via `compilation-directory-matcher'.  Files which are
not shown as full paths are searched for relative to the directory where the
message was issued.

Entering directory `/a/b/c'
Leaving directory `/a/b/c'
gmake[2]: Entering directory `/a/b/c'
makepp: Leaving directory `/a/b/c'


* Miscellaneous

These are not messages that can be gone to.  They are only highlighted via
`compilation-mode-font-lock-keywords' to recognize some useful information at
a glance.

checking dynamic linker characteristics... GNU/Linux ld.so
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether -lc should be explicitly linked in... (cached) no
checking For GLIB - version >= 2.0.0... yes (version 2.1.0)
checking FONTCONFIG_CFLAGS...
g++ -o foo.o foo.cc
tool1 -output=foo foo.x
tool2 --outfile foo foo.y
