On Fri Jan 18 21:41:00 2008, japhb wrote: > --- > osname= linux > osvers= 2.6.22.10 > arch= i486-linux-gnu-thread-multi > cc= cc > --- > Flags: > category=core > severity=low > ack=no > --- > The error message from parrot when there is a spelling mismatch > between > a function call and the function's actual declaration is accurate but > confusing: > > ***** > $ cat > foob.pir > .sub main :main > foo() > .end > > .sub foob > print "Hello\n" > .end > > $ ./parrot foob.pir > Null PMC access in invoke() > current instr.: 'main' pc 7 (foob.pir:2) > ***** > > Of course, once you've seen this error message once or twice, you > won't > soon forget the diagnosis. For the sake of beginners however it would > be nice to add a hint to the message, for example: > > "Null PMC access in invoke(); misspelled sub name in function call?" > > And a similar hint for method calls as well, I suppose. > > > -'f > > --- > Summary of my parrot 0.5.2 (r24923) configuration: > configdate='Thu Jan 17 00:08:44 2008 GMT' > Platform: > osname=linux, archname=i486-linux-gnu-thread-multi > jitcapable=1, jitarchname=i386-linux, > jitosname=LINUX, jitcpuarch=i386 > execcapable=1 > perl=/usr/bin/perl > Compiler: > cc='cc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS > -DDEBIAN -pipe -I/usr/local/include -D_LARGEFILE_SOURCE > -D_FILE_OFFSET_BITS=64 -DHASATTRIBUTE_CONST > -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_FORMAT > -DHASATTRIBUTE_MALLOC -DHASATTRIBUTE_NONNULL > -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE -DHASATTRIBUTE_UNUSED > -DHASATTRIBUTE_WARN_UNUSED_RESULT -falign-functions=16 > -mno-accumulate-outgoing-args -W -Wall -Waggregate-return > -Wbad-function-cast -Wc++-compat -Wcast-align -Wcast-qual > -Wchar-subscripts -Wcomment -Wdeclaration-after-statement > -Wdisabled-optimization -Wextra -Wformat-nonliteral > -Wformat-security -Wformat-y2k -Wimplicit > -Wimplicit-function-declaration -Wimplicit-int -Wimport -Winit-self > -Winline -Winvalid-pch -Wmain -Wmissing-braces > -Wmissing-declarations -Wmissing-field-initializers > -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs > -Wno-endif-labels -Wno-shadow -Wno-unused -Wnonnull -Wpacked > -Wparentheses -Wpointer-arith -Wreturn-! > type -Wsequence-point -Wsign-compare -Wstrict-aliasing > -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs -Wundef > -Wunknown-pragmas -Wvariadic-macros -Wwrite-strings', > Linker and Libraries: > ld='cc', ldflags=' -L/usr/local/lib', > cc_ldflags='', > libs='-ldl -lm -lpthread -lcrypt -lrt -lgmp -lreadline' > Dynamic Linking: > share_ext='.so', ld_share_flags='-shared -L/usr/local/lib -fPIC', > load_ext='.so', ld_load_flags='-shared -L/usr/local/lib -fPIC' > Types: > iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4, > ptrsize=4, ptr_alignment=1 byteorder=1234, > nv=double, numvalsize=8, doublesize=8 > > --- > Environment: > HOME =/home/geoff > LANG =en_US.UTF-8 > LANGUAGE (unset) > LD_LIBRARY_PATH (unset) > LOGDIR (unset) > PATH > =/home/geoff/svk/parrot:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games > SHELL =/bin/bash
This now reports: Could not find non-existent sub foo current instr.: 'main' pc 2 (foob.pir:2) ... Closing ticket.