gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, symtab, updated. 81896b422307105edb99089


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, symtab, updated. 81896b422307105edb9908958bbedd09967d9a05
Date: Thu, 04 Oct 2012 10:05:10 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, symtab has been updated
       via  81896b422307105edb9908958bbedd09967d9a05 (commit)
      from  3d9b832439afeb1b05c60831e0865df585dc55ac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=81896b422307105edb9908958bbedd09967d9a05

commit 81896b422307105edb9908958bbedd09967d9a05
Author: Arnold D. Robbins <address@hidden>
Date:   Thu Oct 4 12:04:34 2012 +0200

    Add tests for SYMTAB and FUNCTAB.

diff --git a/ChangeLog b/ChangeLog
index ec40159..31869fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-04         Arnold D. Robbins     <address@hidden>
+
+       * interpret.h (Op_Subscript): Added lint warnings for FUNCTAB
+       and SYMTAB.
+
 2012-10-02         Arnold D. Robbins     <address@hidden>
 
        * awk.h (func_table): Declare.
diff --git a/interpret.h b/interpret.h
index 5bd3e3a..ab6c9b3 100644
--- a/interpret.h
+++ b/interpret.h
@@ -212,6 +212,12 @@ top:
 
                        /* for FUNCTAB, get the name as the element value */
                        if (t1 == func_table) {
+                               static bool warned = false;
+                               
+                               if (do_lint && ! warned) {
+                                       warned = true;
+                                       lintwarn(_("FUNCTAB is a gawk 
extension"));
+                               }
                                r = t2;
                        } else {
                                r = *assoc_lookup(t1, t2);
@@ -219,8 +225,16 @@ top:
                        DEREF(t2);
 
                        /* for SYMTAB, step through to the actual variable */
-                       if (t1 == symbol_table && r->type == Node_var)
-                               r = r->var_value;
+                       if (t1 == symbol_table) {
+                               static bool warned = false;
+                               
+                               if (do_lint && ! warned) {
+                                       warned = true;
+                                       lintwarn(_("SYMTAB is a gawk 
extension"));
+                               }
+                               if (r->type == Node_var)
+                                       r = r->var_value;
+                       }
 
                        if (r->type == Node_val)
                                UPREF(r);
@@ -909,9 +923,13 @@ match_re:
                                f = lookup(t1->stptr);
                        }
 
-                       if (f == NULL || f->type != Node_func)
-                               fatal(_("function called indirectly through 
`%s' does not exist"),
-                                               pc->func_name); 
+                       if (f == NULL || f->type != Node_func) {
+                               if (f->type == Node_ext_func)
+                                       fatal(_("cannot (yet) call extension 
functions indirectly"));
+                               else
+                                       fatal(_("function called indirectly 
through `%s' does not exist"),
+                                                       pc->func_name); 
+                       }
                        pc->func_body = f;     /* save for next call */
 
                        ni = setup_frame(pc);
diff --git a/test/ChangeLog b/test/ChangeLog
index b8e5594..ff38cdc 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,12 @@
+2012-10-04         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (functab1, functab2, functab3, functab4, id, symtab1,
+       symtab2, symtab3): New tests.
+       * functab1.awk, functab1.ok, functab2.awk, functab2.ok, functab3.awk,
+       functab3.ok, functab4.awk, functab4.ok, id.awk, id.ok, symtab1.awk,
+       symtab1.ok, symtab2.awk, symtab2.ok, symtab3.awk, symtab3.ok:
+       New files.
+
 2012-09-23         Arnold D. Robbins     <address@hidden>
 
        * lintwarn.ok: Updated.
diff --git a/test/Makefile.am b/test/Makefile.am
index 962ab6b..1f20b92 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -47,8 +47,6 @@ EXTRA_DIST = \
        anchgsub.awk \
        anchgsub.in \
        anchgsub.ok \
-       arraysort.awk \
-       arraysort.ok \
        argarray.awk \
        argarray.in \
        argarray.ok \
@@ -62,6 +60,8 @@ EXTRA_DIST = \
        arrayprm3.ok \
        arrayref.awk \
        arrayref.ok \
+       arraysort.awk \
+       arraysort.ok \
        arrymem1.awk \
        arrymem1.ok \
        arryref2.awk \
@@ -160,10 +160,10 @@ EXTRA_DIST = \
        defref.ok \
        delargv.awk \
        delargv.ok \
-       delarprm.awk \
-       delarprm.ok \
        delarpm2.awk \
        delarpm2.ok \
+       delarprm.awk \
+       delarprm.ok \
        delfunc.awk \
        delfunc.ok \
        delsub.awk \
@@ -199,8 +199,8 @@ EXTRA_DIST = \
        fcall_exit.awk \
        fcall_exit.ok \
        fcall_exit2.awk \
-       fcall_exit2.ok \
        fcall_exit2.in \
+       fcall_exit2.ok \
        fflush.ok \
        fflush.sh \
        fieldwdth.awk \
@@ -214,9 +214,9 @@ EXTRA_DIST = \
        fldchgnf.awk \
        fldchgnf.in \
        fldchgnf.ok \
+       fmtspcl-mpfr.ok \
        fmtspcl.awk \
        fmtspcl.tok \
-       fmtspcl-mpfr.ok \
        fmttest.awk \
        fmttest.ok \
        fnamedat.awk \
@@ -227,9 +227,9 @@ EXTRA_DIST = \
        fnarray2.awk \
        fnarray2.in \
        fnarray2.ok \
+       fnarydel-mpfr.ok \
        fnarydel.awk \
        fnarydel.ok \
-       fnarydel-mpfr.ok \
        fnaryscl.awk \
        fnaryscl.ok \
        fnasgnm.awk \
@@ -239,13 +239,19 @@ EXTRA_DIST = \
        fnmatch.ok \
        fnmisc.awk \
        fnmisc.ok \
+       fnparydl-mpfr.ok \
        fnparydl.awk \
        fnparydl.ok \
-       fnparydl-mpfr.ok \
+       fordel.awk \
+       fordel.ok \
        fork.awk \
        fork.ok \
        fork2.awk \
        fork2.ok \
+       forref.awk \
+       forref.ok \
+       forsimp.awk \
+       forsimp.ok \
        fpat1.awk \
        fpat1.in \
        fpat1.ok \
@@ -257,12 +263,6 @@ EXTRA_DIST = \
        fpatnull.awk \
        fpatnull.in \
        fpatnull.ok \
-       fordel.awk \
-       fordel.ok \
-       forref.awk \
-       forref.ok \
-       forsimp.awk \
-       forsimp.ok \
        fsbs.awk \
        fsbs.in \
        fsbs.ok \
@@ -279,6 +279,14 @@ EXTRA_DIST = \
        fstabplus.in \
        fstabplus.ok \
        fts.awk \
+       functab1.awk \
+       functab1.ok \
+       functab2.awk \
+       functab2.ok \
+       functab3.awk \
+       functab3.ok \
+       functab4.awk \
+       functab4.ok \
        funlen.awk \
        funlen.in \
        funlen.ok \
@@ -367,29 +375,31 @@ EXTRA_DIST = \
        icasers.awk \
        icasers.in \
        icasers.ok \
+       id.awk \
+       id.ok \
        igncdym.awk \
        igncdym.in \
        igncdym.ok \
        igncfs.awk \
        igncfs.in \
        igncfs.ok \
+       ignrcas2.awk \
+       ignrcas2.ok \
        ignrcase.awk \
        ignrcase.in \
        ignrcase.ok \
-       ignrcas2.awk \
-       ignrcas2.ok \
-       inclib.awk \
-       include.awk \
-       include.ok \
-       include2.ok \
        incdupe.ok \
        incdupe2.ok \
        incdupe3.ok \
-       inchello.awk \
        incdupe4.ok \
        incdupe5.ok \
        incdupe6.ok \
        incdupe7.ok \
+       inchello.awk \
+       inclib.awk \
+       include.awk \
+       include.ok \
+       include2.ok \
        indirectcall.awk \
        indirectcall.in \
        indirectcall.ok \
@@ -434,8 +444,8 @@ EXTRA_DIST = \
        longsub.in \
        longsub.ok \
        longwrds.awk \
-       longwrds.ok \
        longwrds.in \
+       longwrds.ok \
        manglprm.awk \
        manglprm.in \
        manglprm.ok \
@@ -602,9 +612,6 @@ EXTRA_DIST = \
        prdupval.awk \
        prdupval.in \
        prdupval.ok \
-       profile2.ok \
-       profile3.awk \
-       profile3.ok \
        prec.awk \
        prec.ok \
        printf0.awk \
@@ -626,24 +633,30 @@ EXTRA_DIST = \
        prmreuse.ok \
        procinfs.awk \
        procinfs.ok \
+       profile2.ok \
+       profile3.awk \
+       profile3.ok \
        prt1eval.awk \
        prt1eval.ok \
        prtoeval.awk \
        prtoeval.ok \
        pty1.awk \
        pty1.ok \
+       rand-mpfr.ok \
        rand.awk \
        rand.ok \
-       rand-mpfr.ok \
        range1.awk \
        range1.in \
        range1.ok \
-       readdir0.awk \
        readdir.awk \
+       readdir0.awk \
        rebt8b1.awk \
        rebt8b1.ok \
        rebt8b2.awk \
        rebt8b2.ok \
+       rebuf.awk \
+       rebuf.in \
+       rebuf.ok \
        redfilnm.awk \
        redfilnm.in \
        redfilnm.ok \
@@ -657,9 +670,6 @@ EXTRA_DIST = \
        regtest.sh \
        regx8bit.awk \
        regx8bit.ok \
-       rebuf.awk \
-       rebuf.in \
-       rebuf.ok \
        reindops.awk \
        reindops.in \
        reindops.ok \
@@ -757,16 +767,16 @@ EXTRA_DIST = \
        sprintfc.ok \
        strcat1.awk \
        strcat1.ok \
+       strftime.awk \
+       strftlng.awk \
+       strftlng.ok \
+       strnum1.awk \
+       strnum1.ok \
        strtod.awk \
        strtod.in \
        strtod.ok \
-       strnum1.awk \
-       strnum1.ok \
        strtonum.awk \
        strtonum.ok \
-       strftime.awk \
-       strftlng.awk \
-       strftlng.ok \
        subamp.awk \
        subamp.in \
        subamp.ok \
@@ -783,6 +793,12 @@ EXTRA_DIST = \
        swaplns.ok \
        switch2.awk \
        switch2.ok \
+       symtab1.awk \
+       symtab1.ok \
+       symtab2.awk \
+       symtab2.ok \
+       symtab3.awk \
+       symtab3.ok \
        synerr1.awk \
        synerr1.ok \
        synerr2.awk \
@@ -837,6 +853,7 @@ EXTRA_DIST = \
        zeroflag.awk \
        zeroflag.ok
 
+
 TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
 
 # Get rid of core files when cleaning and generated .ok file
@@ -890,9 +907,10 @@ GAWK_EXT_TESTS = \
        backw badargs beginfile1 beginfile2 binmode1 charasbytes \
        clos1way delsub devfd devfd1 devfd2 dumpvars exit \
        fieldwdth fpat1 fpat2 fpat3  fpatnull fsfwfs funlen \
+       functab1 functab2 functab3 functab4 \
        fwtest fwtest2 fwtest3 \
        gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
-       icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+       icasefs icasers id igncdym igncfs ignrcas2 ignrcase indirectcall \
        lint  lintold lintwarn \
        manyfiles match1 match2 match3 mbstr1 \
        nastyparm  next nondec nondec2 \
@@ -901,6 +919,7 @@ GAWK_EXT_TESTS = \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
        strtonum switch2 \
+       symtab1 symtab2 symtab3 \
        include include2 incdupe incdupe2 incdupe3 \
        incdupe4 incdupe5 incdupe6 incdupe7
 
diff --git a/test/Makefile.in b/test/Makefile.in
index cc8091a..5bb7563 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.3 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -259,8 +259,6 @@ EXTRA_DIST = \
        anchgsub.awk \
        anchgsub.in \
        anchgsub.ok \
-       arraysort.awk \
-       arraysort.ok \
        argarray.awk \
        argarray.in \
        argarray.ok \
@@ -274,6 +272,8 @@ EXTRA_DIST = \
        arrayprm3.ok \
        arrayref.awk \
        arrayref.ok \
+       arraysort.awk \
+       arraysort.ok \
        arrymem1.awk \
        arrymem1.ok \
        arryref2.awk \
@@ -372,10 +372,10 @@ EXTRA_DIST = \
        defref.ok \
        delargv.awk \
        delargv.ok \
-       delarprm.awk \
-       delarprm.ok \
        delarpm2.awk \
        delarpm2.ok \
+       delarprm.awk \
+       delarprm.ok \
        delfunc.awk \
        delfunc.ok \
        delsub.awk \
@@ -411,8 +411,8 @@ EXTRA_DIST = \
        fcall_exit.awk \
        fcall_exit.ok \
        fcall_exit2.awk \
-       fcall_exit2.ok \
        fcall_exit2.in \
+       fcall_exit2.ok \
        fflush.ok \
        fflush.sh \
        fieldwdth.awk \
@@ -426,9 +426,9 @@ EXTRA_DIST = \
        fldchgnf.awk \
        fldchgnf.in \
        fldchgnf.ok \
+       fmtspcl-mpfr.ok \
        fmtspcl.awk \
        fmtspcl.tok \
-       fmtspcl-mpfr.ok \
        fmttest.awk \
        fmttest.ok \
        fnamedat.awk \
@@ -439,9 +439,9 @@ EXTRA_DIST = \
        fnarray2.awk \
        fnarray2.in \
        fnarray2.ok \
+       fnarydel-mpfr.ok \
        fnarydel.awk \
        fnarydel.ok \
-       fnarydel-mpfr.ok \
        fnaryscl.awk \
        fnaryscl.ok \
        fnasgnm.awk \
@@ -451,13 +451,19 @@ EXTRA_DIST = \
        fnmatch.ok \
        fnmisc.awk \
        fnmisc.ok \
+       fnparydl-mpfr.ok \
        fnparydl.awk \
        fnparydl.ok \
-       fnparydl-mpfr.ok \
+       fordel.awk \
+       fordel.ok \
        fork.awk \
        fork.ok \
        fork2.awk \
        fork2.ok \
+       forref.awk \
+       forref.ok \
+       forsimp.awk \
+       forsimp.ok \
        fpat1.awk \
        fpat1.in \
        fpat1.ok \
@@ -469,12 +475,6 @@ EXTRA_DIST = \
        fpatnull.awk \
        fpatnull.in \
        fpatnull.ok \
-       fordel.awk \
-       fordel.ok \
-       forref.awk \
-       forref.ok \
-       forsimp.awk \
-       forsimp.ok \
        fsbs.awk \
        fsbs.in \
        fsbs.ok \
@@ -491,6 +491,14 @@ EXTRA_DIST = \
        fstabplus.in \
        fstabplus.ok \
        fts.awk \
+       functab1.awk \
+       functab1.ok \
+       functab2.awk \
+       functab2.ok \
+       functab3.awk \
+       functab3.ok \
+       functab4.awk \
+       functab4.ok \
        funlen.awk \
        funlen.in \
        funlen.ok \
@@ -579,29 +587,31 @@ EXTRA_DIST = \
        icasers.awk \
        icasers.in \
        icasers.ok \
+       id.awk \
+       id.ok \
        igncdym.awk \
        igncdym.in \
        igncdym.ok \
        igncfs.awk \
        igncfs.in \
        igncfs.ok \
+       ignrcas2.awk \
+       ignrcas2.ok \
        ignrcase.awk \
        ignrcase.in \
        ignrcase.ok \
-       ignrcas2.awk \
-       ignrcas2.ok \
-       inclib.awk \
-       include.awk \
-       include.ok \
-       include2.ok \
        incdupe.ok \
        incdupe2.ok \
        incdupe3.ok \
-       inchello.awk \
        incdupe4.ok \
        incdupe5.ok \
        incdupe6.ok \
        incdupe7.ok \
+       inchello.awk \
+       inclib.awk \
+       include.awk \
+       include.ok \
+       include2.ok \
        indirectcall.awk \
        indirectcall.in \
        indirectcall.ok \
@@ -646,8 +656,8 @@ EXTRA_DIST = \
        longsub.in \
        longsub.ok \
        longwrds.awk \
-       longwrds.ok \
        longwrds.in \
+       longwrds.ok \
        manglprm.awk \
        manglprm.in \
        manglprm.ok \
@@ -814,9 +824,6 @@ EXTRA_DIST = \
        prdupval.awk \
        prdupval.in \
        prdupval.ok \
-       profile2.ok \
-       profile3.awk \
-       profile3.ok \
        prec.awk \
        prec.ok \
        printf0.awk \
@@ -838,24 +845,30 @@ EXTRA_DIST = \
        prmreuse.ok \
        procinfs.awk \
        procinfs.ok \
+       profile2.ok \
+       profile3.awk \
+       profile3.ok \
        prt1eval.awk \
        prt1eval.ok \
        prtoeval.awk \
        prtoeval.ok \
        pty1.awk \
        pty1.ok \
+       rand-mpfr.ok \
        rand.awk \
        rand.ok \
-       rand-mpfr.ok \
        range1.awk \
        range1.in \
        range1.ok \
-       readdir0.awk \
        readdir.awk \
+       readdir0.awk \
        rebt8b1.awk \
        rebt8b1.ok \
        rebt8b2.awk \
        rebt8b2.ok \
+       rebuf.awk \
+       rebuf.in \
+       rebuf.ok \
        redfilnm.awk \
        redfilnm.in \
        redfilnm.ok \
@@ -869,9 +882,6 @@ EXTRA_DIST = \
        regtest.sh \
        regx8bit.awk \
        regx8bit.ok \
-       rebuf.awk \
-       rebuf.in \
-       rebuf.ok \
        reindops.awk \
        reindops.in \
        reindops.ok \
@@ -969,16 +979,16 @@ EXTRA_DIST = \
        sprintfc.ok \
        strcat1.awk \
        strcat1.ok \
+       strftime.awk \
+       strftlng.awk \
+       strftlng.ok \
+       strnum1.awk \
+       strnum1.ok \
        strtod.awk \
        strtod.in \
        strtod.ok \
-       strnum1.awk \
-       strnum1.ok \
        strtonum.awk \
        strtonum.ok \
-       strftime.awk \
-       strftlng.awk \
-       strftlng.ok \
        subamp.awk \
        subamp.in \
        subamp.ok \
@@ -995,6 +1005,12 @@ EXTRA_DIST = \
        swaplns.ok \
        switch2.awk \
        switch2.ok \
+       symtab1.awk \
+       symtab1.ok \
+       symtab2.awk \
+       symtab2.ok \
+       symtab3.awk \
+       symtab3.ok \
        synerr1.awk \
        synerr1.ok \
        synerr2.awk \
@@ -1102,9 +1118,10 @@ GAWK_EXT_TESTS = \
        backw badargs beginfile1 beginfile2 binmode1 charasbytes \
        clos1way delsub devfd devfd1 devfd2 dumpvars exit \
        fieldwdth fpat1 fpat2 fpat3  fpatnull fsfwfs funlen \
+       functab1 functab2 functab3 functab4 \
        fwtest fwtest2 fwtest3 \
        gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
-       icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+       icasefs icasers id igncdym igncfs ignrcas2 ignrcase indirectcall \
        lint  lintold lintwarn \
        manyfiles match1 match2 match3 mbstr1 \
        nastyparm  next nondec nondec2 \
@@ -1113,6 +1130,7 @@ GAWK_EXT_TESTS = \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
        strtonum switch2 \
+       symtab1 symtab2 symtab3 \
        include include2 incdupe incdupe2 incdupe3 \
        incdupe4 incdupe5 incdupe6 incdupe7
 
@@ -3014,6 +3032,26 @@ funlen:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+functab1:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab2:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab3:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab4:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 fwtest:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -3069,6 +3107,11 @@ icasers:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+id:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 igncdym:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -3204,6 +3247,21 @@ switch2:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+symtab1:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+symtab2:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+symtab3:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 include:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 3951c3f..6490410 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -960,6 +960,26 @@ funlen:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+functab1:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab2:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab3:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+functab4:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 fwtest:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1015,6 +1035,11 @@ icasers:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+id:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 igncdym:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1150,6 +1175,21 @@ switch2:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+symtab1:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+symtab2:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
+symtab3:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 include:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/functab1.awk b/test/functab1.awk
new file mode 100644
index 0000000..0569268
--- /dev/null
+++ b/test/functab1.awk
@@ -0,0 +1,3 @@
+BEGIN {
+       delete FUNCTAB 
+}
diff --git a/test/functab1.ok b/test/functab1.ok
new file mode 100644
index 0000000..2a60a4c
--- /dev/null
+++ b/test/functab1.ok
@@ -0,0 +1,2 @@
+gawk: functab1.awk:3: fatal: `delete' is not allowed with FUNCTAB
+EXIT CODE: 2
diff --git a/test/functab2.awk b/test/functab2.awk
new file mode 100644
index 0000000..9a07dfc
--- /dev/null
+++ b/test/functab2.awk
@@ -0,0 +1,8 @@
+function foo()
+{
+       print "foo!"
+}
+
+BEGIN {
+       FUNCTAB["a"] = "something"
+}
diff --git a/test/functab2.ok b/test/functab2.ok
new file mode 100644
index 0000000..32b07ad
--- /dev/null
+++ b/test/functab2.ok
@@ -0,0 +1,2 @@
+gawk: functab2.awk:7: fatal: cannot assign to elements of FUNCTAB
+EXIT CODE: 2
diff --git a/test/functab3.awk b/test/functab3.awk
new file mode 100644
index 0000000..98fa49b
--- /dev/null
+++ b/test/functab3.awk
@@ -0,0 +1,10 @@
+function foo()
+{
+       print "foo!"
+}
+
+BEGIN {
+       x = FUNCTAB["foo"]
+       print "x =", x
+       @x()
+}
diff --git a/test/functab3.ok b/test/functab3.ok
new file mode 100644
index 0000000..66f53d7
--- /dev/null
+++ b/test/functab3.ok
@@ -0,0 +1,2 @@
+x = foo
+foo!
diff --git a/test/functab4.awk b/test/functab4.awk
new file mode 100644
index 0000000..0d9d426
--- /dev/null
+++ b/test/functab4.awk
@@ -0,0 +1,14 @@
address@hidden "filefuncs"
+
+function foo()
+{
+       print "foo!"
+}
+
+BEGIN {
+       x = FUNCTAB["chdir"]
+       print "x =", x
+       @x("/tmp")
+       printf "we are now in --> "
+       system("/bin/pwd || /usr/bin/pwd")
+}
diff --git a/test/functab4.ok b/test/functab4.ok
new file mode 100644
index 0000000..70a520b
--- /dev/null
+++ b/test/functab4.ok
@@ -0,0 +1,3 @@
+x = chdir
+gawk: functab4.awk:11: fatal: cannot (yet) call extension functions indirectly
+EXIT CODE: 2
diff --git a/test/id.awk b/test/id.awk
new file mode 100644
index 0000000..2a35e42
--- /dev/null
+++ b/test/id.awk
@@ -0,0 +1,11 @@
+function function1()
+{
+       print "function1"
+}
+
+BEGIN { 
+       an_array[1] = 1
+
+       for (i in PROCINFO["identifiers"])
+             printf("%s -> %s\n", i, PROCINFO["identifiers"][i])
+}
diff --git a/test/id.ok b/test/id.ok
new file mode 100644
index 0000000..d31573d
--- /dev/null
+++ b/test/id.ok
@@ -0,0 +1,32 @@
+FUNCTAB -> array
+ARGV -> array
+SYMTAB -> array
+ORS -> scalar
+ROUNDMODE -> scalar
+i -> untyped
+OFS -> scalar
+ERRNO -> scalar
+FNR -> scalar
+LINT -> scalar
+IGNORECASE -> scalar
+NR -> scalar
+function1 -> user
+ARGIND -> scalar
+NF -> scalar
+TEXTDOMAIN -> scalar
+CONVFMT -> scalar
+FIELDWIDTHS -> scalar
+ARGC -> scalar
+an_array -> untyped
+PROCINFO -> array
+PREC -> scalar
+SUBSEP -> scalar
+FPAT -> scalar
+RS -> scalar
+FS -> scalar
+OFMT -> scalar
+RLENGTH -> scalar
+RT -> scalar
+BINMODE -> scalar
+FILENAME -> scalar
+RSTART -> scalar
diff --git a/test/symtab1.awk b/test/symtab1.awk
new file mode 100644
index 0000000..6ca7d63
--- /dev/null
+++ b/test/symtab1.awk
@@ -0,0 +1,18 @@
+function dumparray(name, array,                i)
+{
+       for (i in array)
+               if (isarray(array[i]))
+                       dumparray(name "[" i "]", array[i])
+               else
+                       printf("%s[%s] = %s\n", name, i, array[i])
+}
+
+BEGIN {
+       a[1] = 1
+       a[2][1] = 21
+       for (i in SYMTAB)
+               if (isarray(SYMTAB[i]))
+                       dumparray(i, SYMTAB[i])
+               else
+                       printf("SYMTAB[\"%s\"] = \"%s\"\n", i, SYMTAB[i])
+}
diff --git a/test/symtab1.ok b/test/symtab1.ok
new file mode 100644
index 0000000..3e435dd
--- /dev/null
+++ b/test/symtab1.ok
@@ -0,0 +1,31 @@
+ARGV[0] = gawk
+SYMTAB["i"] = "i"
+SYMTAB["ROUNDMODE"] = "N"
+SYMTAB["ORS"] = "
+"
+SYMTAB["OFS"] = " "
+SYMTAB["LINT"] = "0"
+SYMTAB["FNR"] = "0"
+SYMTAB["ERRNO"] = ""
+SYMTAB["NR"] = "0"
+SYMTAB["IGNORECASE"] = "0"
+SYMTAB["TEXTDOMAIN"] = "messages"
+SYMTAB["NF"] = "-1"
+SYMTAB["ARGIND"] = "0"
+a[1] = 1
+a[2][1] = 21
+SYMTAB["ARGC"] = "1"
+SYMTAB["FIELDWIDTHS"] = ""
+SYMTAB["CONVFMT"] = "%.6g"
+SYMTAB["SUBSEP"] = ""
+SYMTAB["PREC"] = "53"
+SYMTAB["RS"] = "
+"
+SYMTAB["FPAT"] = "[^[:space:]]+"
+SYMTAB["RT"] = ""
+SYMTAB["RLENGTH"] = "0"
+SYMTAB["OFMT"] = "%.6g"
+SYMTAB["FS"] = " "
+SYMTAB["RSTART"] = "0"
+SYMTAB["FILENAME"] = ""
+SYMTAB["BINMODE"] = "0"
diff --git a/test/symtab2.awk b/test/symtab2.awk
new file mode 100644
index 0000000..bb26f75
--- /dev/null
+++ b/test/symtab2.awk
@@ -0,0 +1,6 @@
+BEGIN {
+       a = 5
+       printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"]
+       SYMTAB["a"] = 4
+       printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"]
+}
diff --git a/test/symtab2.ok b/test/symtab2.ok
new file mode 100644
index 0000000..23d2bf6
--- /dev/null
+++ b/test/symtab2.ok
@@ -0,0 +1,2 @@
+a = 5, SYMTAB["a"] = 5
+a = 4, SYMTAB["a"] = 4
diff --git a/test/symtab3.awk b/test/symtab3.awk
new file mode 100644
index 0000000..4c2026d
--- /dev/null
+++ b/test/symtab3.awk
@@ -0,0 +1 @@
+BEGIN { a = 5 ; delete SYMTAB["a"] }
diff --git a/test/symtab3.ok b/test/symtab3.ok
new file mode 100644
index 0000000..5b28358
--- /dev/null
+++ b/test/symtab3.ok
@@ -0,0 +1,2 @@
+gawk: symtab3.awk:1: fatal: `delete' is not allowed with SYMTAB
+EXIT CODE: 2

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog         |    5 ++
 interpret.h       |   28 +++++++++--
 test/ChangeLog    |    9 ++++
 test/Makefile.am  |   91 ++++++++++++++++++++++--------------
 test/Makefile.in  |  132 ++++++++++++++++++++++++++++++++++++++---------------
 test/Maketests    |   40 ++++++++++++++++
 test/functab1.awk |    3 +
 test/functab1.ok  |    2 +
 test/functab2.awk |    8 +++
 test/functab2.ok  |    2 +
 test/functab3.awk |   10 ++++
 test/functab3.ok  |    2 +
 test/functab4.awk |   14 ++++++
 test/functab4.ok  |    3 +
 test/id.awk       |   11 ++++
 test/id.ok        |   32 +++++++++++++
 test/symtab1.awk  |   18 +++++++
 test/symtab1.ok   |   31 ++++++++++++
 test/symtab2.awk  |    6 ++
 test/symtab2.ok   |    2 +
 test/symtab3.awk  |    1 +
 test/symtab3.ok   |    2 +
 22 files changed, 374 insertions(+), 78 deletions(-)
 create mode 100644 test/functab1.awk
 create mode 100644 test/functab1.ok
 create mode 100644 test/functab2.awk
 create mode 100644 test/functab2.ok
 create mode 100644 test/functab3.awk
 create mode 100644 test/functab3.ok
 create mode 100644 test/functab4.awk
 create mode 100644 test/functab4.ok
 create mode 100644 test/id.awk
 create mode 100644 test/id.ok
 create mode 100644 test/symtab1.awk
 create mode 100644 test/symtab1.ok
 create mode 100644 test/symtab2.awk
 create mode 100644 test/symtab2.ok
 create mode 100644 test/symtab3.awk
 create mode 100644 test/symtab3.ok


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]