[Top][All Lists]

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

[SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4319-g99a610a

From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4319-g99a610a
Date: Fri, 1 Oct 2021 03:18:33 -0400 (EDT)

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, gawk-5.1-stable has been updated
       via  99a610a84bb5f25e8105f65d928a772da3a66d5f (commit)
      from  b119426eb9db950752533dd410710a6389ee633a (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 -----------------------------------------------------------------

commit 99a610a84bb5f25e8105f65d928a772da3a66d5f
Author: Arnold D. Robbins <>
Date:   Fri Oct 1 10:17:59 2021 +0300

    Doc update.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 361de52..7a1f8c6 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2021-10-01         Arnold D. Robbins     <>
+       * Clarify typeof() usage with array elements
+       created by reference.
 2021-09-27         Arnold D. Robbins     <>
        * Small cleanups from Antonio Columbo.  General
diff --git a/doc/ b/doc/
index 671c67c..1c7dfa2 100644
--- a/doc/
+++ b/doc/
@@ -14525,6 +14525,23 @@ function causes it to become a scalar variable 
(unassigned).  However,
 'isarray()' and 'typeof()' are different; they do not change their
 arguments from untyped to unassigned.
+   By "variable" we mean one denoted by a simple identifier.  Array
+elements that come into existence simply by referencing them are
+different, they are automatically forced to be scalars.  Consider:
+     $ gawk 'BEGIN { print typeof(x) }'
+     -| untyped
+     $ gawk 'BEGIN { print typeof(x["foo"]) }'
+     -| unassigned
+'x[0]' comes into existence before it is passed to 'typeof()';
+'typeof()' cannot tell that it didn't exist prior to being called.
+   This may change in a future release, whereby 'gawk' would allow such
+an unassigned array element to be used for a multidimensional array, and
+not remain a scalar forever (or until deleted).
 File:,  Node: I18N Functions,  Prev: Type Functions,  Up: Built-in
@@ -36021,6 +36038,8 @@ Index
                                                               (line 179)
 * dark corner, length() function:        String Functions.    (line 201)
 * dark corner, split() function:         String Functions.    (line 380)
+* dark corner, array elements created by reference: Type Functions.
+                                                              (line  85)
 * dark corner, parameter name restrictions: Definition Syntax.
                                                               (line  44)
 * dark corner <1>:                       Glossary.            (line 266)
@@ -38762,338 +38781,338 @@ Ref: table-bitwise-ops604559
 Ref: Bitwise Functions-Footnote-1610622
 Ref: Bitwise Functions-Footnote-2610795
 Node: Type Functions610986
-Node: I18N Functions613849
-Node: User-defined615500
-Node: Definition Syntax616312
-Ref: Definition Syntax-Footnote-1622006
-Node: Function Example622077
-Ref: Function Example-Footnote-1624999
-Node: Function Calling625021
-Node: Calling A Function625609
-Node: Variable Scope626567
-Node: Pass By Value/Reference629561
-Node: Function Caveats632205
-Ref: Function Caveats-Footnote-1634252
-Node: Return Statement634372
-Node: Dynamic Typing637351
-Node: Indirect Calls638281
-Ref: Indirect Calls-Footnote-1648533
-Node: Functions Summary648661
-Node: Library Functions651366
-Ref: Library Functions-Footnote-1654973
-Ref: Library Functions-Footnote-2655116
-Node: Library Names655287
-Ref: Library Names-Footnote-1658954
-Ref: Library Names-Footnote-2659177
-Node: General Functions659263
-Node: Strtonum Function660445
-Node: Assert Function663467
-Node: Round Function666793
-Node: Cliff Random Function668333
-Node: Ordinal Functions669349
-Ref: Ordinal Functions-Footnote-1672412
-Ref: Ordinal Functions-Footnote-2672664
-Node: Join Function672874
-Ref: Join Function-Footnote-1674644
-Node: Getlocaltime Function674844
-Node: Readfile Function678586
-Node: Shell Quoting680563
-Node: Isnumeric Function681991
-Node: Data File Management683379
-Node: Filetrans Function684011
-Node: Rewind Function688107
-Node: File Checking690016
-Ref: File Checking-Footnote-1691350
-Node: Empty Files691551
-Node: Ignoring Assigns693530
-Node: Getopt Function695080
-Ref: Getopt Function-Footnote-1710303
-Node: Passwd Functions710503
-Ref: Passwd Functions-Footnote-1719342
-Node: Group Functions719430
-Ref: Group Functions-Footnote-1727328
-Node: Walking Arrays727535
-Node: Library Functions Summary730543
-Node: Library Exercises731949
-Node: Sample Programs732414
-Node: Running Examples733184
-Node: Clones733912
-Node: Cut Program735136
-Node: Egrep Program745276
-Node: Id Program754277
-Node: Split Program764224
-Ref: Split Program-Footnote-1774117
-Node: Tee Program774290
-Node: Uniq Program777080
-Node: Wc Program784668
-Node: Bytes vs. Characters785055
-Node: Using extensions786603
-Node: wc program787357
-Node: Miscellaneous Programs792222
-Node: Dupword Program793435
-Node: Alarm Program795465
-Node: Translate Program800320
-Ref: Translate Program-Footnote-1804885
-Node: Labels Program805155
-Ref: Labels Program-Footnote-1808506
-Node: Word Sorting808590
-Node: History Sorting812662
-Node: Extract Program814887
-Node: Simple Sed822941
-Node: Igawk Program826015
-Ref: Igawk Program-Footnote-1840346
-Ref: Igawk Program-Footnote-2840548
-Ref: Igawk Program-Footnote-3840670
-Node: Anagram Program840785
-Node: Signature Program843847
-Node: Programs Summary845094
-Node: Programs Exercises846308
-Ref: Programs Exercises-Footnote-1850438
-Node: Advanced Features850524
-Node: Nondecimal Data852591
-Node: Array Sorting854182
-Node: Controlling Array Traversal854882
-Ref: Controlling Array Traversal-Footnote-1863250
-Node: Array Sorting Functions863368
-Ref: Array Sorting Functions-Footnote-1868742
-Node: Two-way I/O868938
-Ref: Two-way I/O-Footnote-1876664
-Ref: Two-way I/O-Footnote-2876851
-Node: TCP/IP Networking876933
-Node: Profiling880051
-Node: Extension Philosophy889360
-Node: Advanced Features Summary890839
-Node: Internationalization892854
-Node: I18N and L10N894528
-Node: Explaining gettext895215
-Ref: Explaining gettext-Footnote-1901107
-Ref: Explaining gettext-Footnote-2901292
-Node: Programmer i18n901457
-Ref: Programmer i18n-Footnote-1906406
-Node: Translator i18n906455
-Node: String Extraction907249
-Ref: String Extraction-Footnote-1908381
-Node: Printf Ordering908467
-Ref: Printf Ordering-Footnote-1911253
-Node: I18N Portability911317
-Ref: I18N Portability-Footnote-1913773
-Node: I18N Example913836
-Ref: I18N Example-Footnote-1917111
-Ref: I18N Example-Footnote-2917184
-Node: Gawk I18N917293
-Node: I18N Summary917942
-Node: Debugger919283
-Node: Debugging920283
-Node: Debugging Concepts920724
-Node: Debugging Terms922533
-Node: Awk Debugging925108
-Ref: Awk Debugging-Footnote-1926053
-Node: Sample Debugging Session926185
-Node: Debugger Invocation926719
-Node: Finding The Bug928105
-Node: List of Debugger Commands934579
-Node: Breakpoint Control935912
-Node: Debugger Execution Control939606
-Node: Viewing And Changing Data942968
-Node: Execution Stack946509
-Node: Debugger Info948146
-Node: Miscellaneous Debugger Commands952217
-Node: Readline Support957279
-Node: Limitations958175
-Node: Debugging Summary960729
-Node: Namespaces962008
-Node: Global Namespace963119
-Node: Qualified Names964517
-Node: Default Namespace965516
-Node: Changing The Namespace966257
-Node: Naming Rules967871
-Node: Internal Name Management969719
-Node: Namespace Example970761
-Node: Namespace And Features973323
-Node: Namespace Summary974758
-Node: Arbitrary Precision Arithmetic976235
-Node: Computer Arithmetic977722
-Ref: table-numeric-ranges981488
-Ref: table-floating-point-ranges981981
-Ref: Computer Arithmetic-Footnote-1982639
-Node: Math Definitions982696
-Ref: table-ieee-formats986012
-Ref: Math Definitions-Footnote-1986615
-Node: MPFR features986720
-Node: FP Math Caution988438
-Ref: FP Math Caution-Footnote-1989510
-Node: Inexactness of computations989879
-Node: Inexact representation990839
-Node: Comparing FP Values992199
-Node: Errors accumulate993440
-Node: Getting Accuracy994873
-Node: Try To Round997583
-Node: Setting precision998482
-Ref: table-predefined-precision-strings999179
-Node: Setting the rounding mode1001009
-Ref: table-gawk-rounding-modes1001383
-Ref: Setting the rounding mode-Footnote-11005314
-Node: Arbitrary Precision Integers1005493
-Ref: Arbitrary Precision Integers-Footnote-11008668
-Node: Checking for MPFR1008817
-Node: POSIX Floating Point Problems1010291
-Ref: POSIX Floating Point Problems-Footnote-11014576
-Node: Floating point summary1014614
-Node: Dynamic Extensions1016804
-Node: Extension Intro1018357
-Node: Plugin License1019623
-Node: Extension Mechanism Outline1020420
-Ref: figure-load-extension1020859
-Ref: figure-register-new-function1022424
-Ref: figure-call-new-function1023516
-Node: Extension API Description1025578
-Node: Extension API Functions Introduction1027291
-Ref: table-api-std-headers1029127
-Node: General Data Types1033376
-Ref: General Data Types-Footnote-11042006
-Node: Memory Allocation Functions1042305
-Ref: Memory Allocation Functions-Footnote-11046806
-Node: Constructor Functions1046905
-Node: API Ownership of MPFR and GMP Values1050371
-Node: Registration Functions1051684
-Node: Extension Functions1052384
-Node: Exit Callback Functions1057706
-Node: Extension Version String1058956
-Node: Input Parsers1059619
-Node: Output Wrappers1072340
-Node: Two-way processors1076852
-Node: Printing Messages1079117
-Ref: Printing Messages-Footnote-11080288
-Node: Updating ERRNO1080441
-Node: Requesting Values1081180
-Ref: table-value-types-returned1081917
-Node: Accessing Parameters1082853
-Node: Symbol Table Access1084090
-Node: Symbol table by name1084602
-Ref: Symbol table by name-Footnote-11087627
-Node: Symbol table by cookie1087755
-Ref: Symbol table by cookie-Footnote-11091940
-Node: Cached values1092004
-Ref: Cached values-Footnote-11095540
-Node: Array Manipulation1095693
-Ref: Array Manipulation-Footnote-11096784
-Node: Array Data Types1096821
-Ref: Array Data Types-Footnote-11099479
-Node: Array Functions1099571
-Node: Flattening Arrays1104069
-Node: Creating Arrays1111045
-Node: Redirection API1115812
-Node: Extension API Variables1118645
-Node: Extension Versioning1119356
-Ref: gawk-api-version1119785
-Node: Extension GMP/MPFR Versioning1121516
-Node: Extension API Informational Variables1123144
-Node: Extension API Boilerplate1124217
-Node: Changes from API V11128191
-Node: Finding Extensions1129763
-Node: Extension Example1130322
-Node: Internal File Description1131120
-Node: Internal File Ops1135200
-Ref: Internal File Ops-Footnote-11146550
-Node: Using Internal File Ops1146690
-Ref: Using Internal File Ops-Footnote-11149073
-Node: Extension Samples1149347
-Node: Extension Sample File Functions1150876
-Node: Extension Sample Fnmatch1158525
-Node: Extension Sample Fork1160012
-Node: Extension Sample Inplace1161230
-Node: Extension Sample Ord1164856
-Node: Extension Sample Readdir1165692
-Ref: table-readdir-file-types1166581
-Node: Extension Sample Revout1167648
-Node: Extension Sample Rev2way1168237
-Node: Extension Sample Read write array1168977
-Node: Extension Sample Readfile1170919
-Node: Extension Sample Time1172014
-Node: Extension Sample API Tests1173766
-Node: gawkextlib1174258
-Node: Extension summary1177176
-Node: Extension Exercises1180878
-Node: Language History1182120
-Node: V7/SVR3.11183776
-Node: SVR41185928
-Node: POSIX1187362
-Node: BTL1188743
-Node: POSIX/GNU1189472
-Node: Feature History1195250
-Node: Common Extensions1212425
-Node: Ranges and Locales1213708
-Ref: Ranges and Locales-Footnote-11218324
-Ref: Ranges and Locales-Footnote-21218351
-Ref: Ranges and Locales-Footnote-31218586
-Node: Contributors1218809
-Node: History summary1224806
-Node: Installation1226186
-Node: Gawk Distribution1227130
-Node: Getting1227614
-Node: Extracting1228577
-Node: Distribution contents1230215
-Node: Unix Installation1237357
-Node: Quick Installation1238161
-Node: Compiling with MPFR1240637
-Node: Shell Startup Files1241329
-Node: Additional Configuration Options1242418
-Node: Configuration Philosophy1244733
-Node: Compiling from Git1247129
-Node: Building the Documentation1247684
-Node: Non-Unix Installation1249068
-Node: PC Installation1249528
-Node: PC Binary Installation1250366
-Node: PC Compiling1250801
-Node: PC Using1251918
-Node: Cygwin1255471
-Node: MSYS1256695
-Node: VMS Installation1257297
-Node: VMS Compilation1258016
-Ref: VMS Compilation-Footnote-11259245
-Node: VMS Dynamic Extensions1259303
-Node: VMS Installation Details1260988
-Node: VMS Running1263250
-Node: VMS GNV1267529
-Node: Bugs1268243
-Node: Bug definition1269155
-Node: Bug address1271659
-Node: Usenet1275047
-Node: Performance bugs1276056
-Node: Asking for help1278977
-Node: Maintainers1280939
-Node: Other Versions1282133
-Node: Installation summary1289985
-Node: Notes1291349
-Node: Compatibility Mode1292143
-Node: Additions1292925
-Node: Accessing The Source1293850
-Node: Adding Code1295287
-Node: New Ports1301506
-Node: Derived Files1305881
-Ref: Derived Files-Footnote-11311541
-Ref: Derived Files-Footnote-21311576
-Ref: Derived Files-Footnote-31312174
-Node: Future Extensions1312288
-Node: Implementation Limitations1312946
-Node: Extension Design1314156
-Node: Old Extension Problems1315300
-Ref: Old Extension Problems-Footnote-11316818
-Node: Extension New Mechanism Goals1316875
-Ref: Extension New Mechanism Goals-Footnote-11320239
-Node: Extension Other Design Decisions1320428
-Node: Extension Future Growth1322541
-Node: Notes summary1323147
-Node: Basic Concepts1324305
-Node: Basic High Level1324986
-Ref: figure-general-flow1325268
-Ref: figure-process-flow1325953
-Ref: Basic High Level-Footnote-11329254
-Node: Basic Data Typing1329439
-Node: Glossary1332767
-Node: Copying1364652
-Node: GNU Free Documentation License1402195
-Node: Index1427315
+Node: I18N Functions614505
+Node: User-defined616156
+Node: Definition Syntax616968
+Ref: Definition Syntax-Footnote-1622662
+Node: Function Example622733
+Ref: Function Example-Footnote-1625655
+Node: Function Calling625677
+Node: Calling A Function626265
+Node: Variable Scope627223
+Node: Pass By Value/Reference630217
+Node: Function Caveats632861
+Ref: Function Caveats-Footnote-1634908
+Node: Return Statement635028
+Node: Dynamic Typing638007
+Node: Indirect Calls638937
+Ref: Indirect Calls-Footnote-1649189
+Node: Functions Summary649317
+Node: Library Functions652022
+Ref: Library Functions-Footnote-1655629
+Ref: Library Functions-Footnote-2655772
+Node: Library Names655943
+Ref: Library Names-Footnote-1659610
+Ref: Library Names-Footnote-2659833
+Node: General Functions659919
+Node: Strtonum Function661101
+Node: Assert Function664123
+Node: Round Function667449
+Node: Cliff Random Function668989
+Node: Ordinal Functions670005
+Ref: Ordinal Functions-Footnote-1673068
+Ref: Ordinal Functions-Footnote-2673320
+Node: Join Function673530
+Ref: Join Function-Footnote-1675300
+Node: Getlocaltime Function675500
+Node: Readfile Function679242
+Node: Shell Quoting681219
+Node: Isnumeric Function682647
+Node: Data File Management684035
+Node: Filetrans Function684667
+Node: Rewind Function688763
+Node: File Checking690672
+Ref: File Checking-Footnote-1692006
+Node: Empty Files692207
+Node: Ignoring Assigns694186
+Node: Getopt Function695736
+Ref: Getopt Function-Footnote-1710959
+Node: Passwd Functions711159
+Ref: Passwd Functions-Footnote-1719998
+Node: Group Functions720086
+Ref: Group Functions-Footnote-1727984
+Node: Walking Arrays728191
+Node: Library Functions Summary731199
+Node: Library Exercises732605
+Node: Sample Programs733070
+Node: Running Examples733840
+Node: Clones734568
+Node: Cut Program735792
+Node: Egrep Program745932
+Node: Id Program754933
+Node: Split Program764880
+Ref: Split Program-Footnote-1774773
+Node: Tee Program774946
+Node: Uniq Program777736
+Node: Wc Program785324
+Node: Bytes vs. Characters785711
+Node: Using extensions787259
+Node: wc program788013
+Node: Miscellaneous Programs792878
+Node: Dupword Program794091
+Node: Alarm Program796121
+Node: Translate Program800976
+Ref: Translate Program-Footnote-1805541
+Node: Labels Program805811
+Ref: Labels Program-Footnote-1809162
+Node: Word Sorting809246
+Node: History Sorting813318
+Node: Extract Program815543
+Node: Simple Sed823597
+Node: Igawk Program826671
+Ref: Igawk Program-Footnote-1841002
+Ref: Igawk Program-Footnote-2841204
+Ref: Igawk Program-Footnote-3841326
+Node: Anagram Program841441
+Node: Signature Program844503
+Node: Programs Summary845750
+Node: Programs Exercises846964
+Ref: Programs Exercises-Footnote-1851094
+Node: Advanced Features851180
+Node: Nondecimal Data853247
+Node: Array Sorting854838
+Node: Controlling Array Traversal855538
+Ref: Controlling Array Traversal-Footnote-1863906
+Node: Array Sorting Functions864024
+Ref: Array Sorting Functions-Footnote-1869398
+Node: Two-way I/O869594
+Ref: Two-way I/O-Footnote-1877320
+Ref: Two-way I/O-Footnote-2877507
+Node: TCP/IP Networking877589
+Node: Profiling880707
+Node: Extension Philosophy890016
+Node: Advanced Features Summary891495
+Node: Internationalization893510
+Node: I18N and L10N895184
+Node: Explaining gettext895871
+Ref: Explaining gettext-Footnote-1901763
+Ref: Explaining gettext-Footnote-2901948
+Node: Programmer i18n902113
+Ref: Programmer i18n-Footnote-1907062
+Node: Translator i18n907111
+Node: String Extraction907905
+Ref: String Extraction-Footnote-1909037
+Node: Printf Ordering909123
+Ref: Printf Ordering-Footnote-1911909
+Node: I18N Portability911973
+Ref: I18N Portability-Footnote-1914429
+Node: I18N Example914492
+Ref: I18N Example-Footnote-1917767
+Ref: I18N Example-Footnote-2917840
+Node: Gawk I18N917949
+Node: I18N Summary918598
+Node: Debugger919939
+Node: Debugging920939
+Node: Debugging Concepts921380
+Node: Debugging Terms923189
+Node: Awk Debugging925764
+Ref: Awk Debugging-Footnote-1926709
+Node: Sample Debugging Session926841
+Node: Debugger Invocation927375
+Node: Finding The Bug928761
+Node: List of Debugger Commands935235
+Node: Breakpoint Control936568
+Node: Debugger Execution Control940262
+Node: Viewing And Changing Data943624
+Node: Execution Stack947165
+Node: Debugger Info948802
+Node: Miscellaneous Debugger Commands952873
+Node: Readline Support957935
+Node: Limitations958831
+Node: Debugging Summary961385
+Node: Namespaces962664
+Node: Global Namespace963775
+Node: Qualified Names965173
+Node: Default Namespace966172
+Node: Changing The Namespace966913
+Node: Naming Rules968527
+Node: Internal Name Management970375
+Node: Namespace Example971417
+Node: Namespace And Features973979
+Node: Namespace Summary975414
+Node: Arbitrary Precision Arithmetic976891
+Node: Computer Arithmetic978378
+Ref: table-numeric-ranges982144
+Ref: table-floating-point-ranges982637
+Ref: Computer Arithmetic-Footnote-1983295
+Node: Math Definitions983352
+Ref: table-ieee-formats986668
+Ref: Math Definitions-Footnote-1987271
+Node: MPFR features987376
+Node: FP Math Caution989094
+Ref: FP Math Caution-Footnote-1990166
+Node: Inexactness of computations990535
+Node: Inexact representation991495
+Node: Comparing FP Values992855
+Node: Errors accumulate994096
+Node: Getting Accuracy995529
+Node: Try To Round998239
+Node: Setting precision999138
+Ref: table-predefined-precision-strings999835
+Node: Setting the rounding mode1001665
+Ref: table-gawk-rounding-modes1002039
+Ref: Setting the rounding mode-Footnote-11005970
+Node: Arbitrary Precision Integers1006149
+Ref: Arbitrary Precision Integers-Footnote-11009324
+Node: Checking for MPFR1009473
+Node: POSIX Floating Point Problems1010947
+Ref: POSIX Floating Point Problems-Footnote-11015232
+Node: Floating point summary1015270
+Node: Dynamic Extensions1017460
+Node: Extension Intro1019013
+Node: Plugin License1020279
+Node: Extension Mechanism Outline1021076
+Ref: figure-load-extension1021515
+Ref: figure-register-new-function1023080
+Ref: figure-call-new-function1024172
+Node: Extension API Description1026234
+Node: Extension API Functions Introduction1027947
+Ref: table-api-std-headers1029783
+Node: General Data Types1034032
+Ref: General Data Types-Footnote-11042662
+Node: Memory Allocation Functions1042961
+Ref: Memory Allocation Functions-Footnote-11047462
+Node: Constructor Functions1047561
+Node: API Ownership of MPFR and GMP Values1051027
+Node: Registration Functions1052340
+Node: Extension Functions1053040
+Node: Exit Callback Functions1058362
+Node: Extension Version String1059612
+Node: Input Parsers1060275
+Node: Output Wrappers1072996
+Node: Two-way processors1077508
+Node: Printing Messages1079773
+Ref: Printing Messages-Footnote-11080944
+Node: Updating ERRNO1081097
+Node: Requesting Values1081836
+Ref: table-value-types-returned1082573
+Node: Accessing Parameters1083509
+Node: Symbol Table Access1084746
+Node: Symbol table by name1085258
+Ref: Symbol table by name-Footnote-11088283
+Node: Symbol table by cookie1088411
+Ref: Symbol table by cookie-Footnote-11092596
+Node: Cached values1092660
+Ref: Cached values-Footnote-11096196
+Node: Array Manipulation1096349
+Ref: Array Manipulation-Footnote-11097440
+Node: Array Data Types1097477
+Ref: Array Data Types-Footnote-11100135
+Node: Array Functions1100227
+Node: Flattening Arrays1104725
+Node: Creating Arrays1111701
+Node: Redirection API1116468
+Node: Extension API Variables1119301
+Node: Extension Versioning1120012
+Ref: gawk-api-version1120441
+Node: Extension GMP/MPFR Versioning1122172
+Node: Extension API Informational Variables1123800
+Node: Extension API Boilerplate1124873
+Node: Changes from API V11128847
+Node: Finding Extensions1130419
+Node: Extension Example1130978
+Node: Internal File Description1131776
+Node: Internal File Ops1135856
+Ref: Internal File Ops-Footnote-11147206
+Node: Using Internal File Ops1147346
+Ref: Using Internal File Ops-Footnote-11149729
+Node: Extension Samples1150003
+Node: Extension Sample File Functions1151532
+Node: Extension Sample Fnmatch1159181
+Node: Extension Sample Fork1160668
+Node: Extension Sample Inplace1161886
+Node: Extension Sample Ord1165512
+Node: Extension Sample Readdir1166348
+Ref: table-readdir-file-types1167237
+Node: Extension Sample Revout1168304
+Node: Extension Sample Rev2way1168893
+Node: Extension Sample Read write array1169633
+Node: Extension Sample Readfile1171575
+Node: Extension Sample Time1172670
+Node: Extension Sample API Tests1174422
+Node: gawkextlib1174914
+Node: Extension summary1177832
+Node: Extension Exercises1181534
+Node: Language History1182776
+Node: V7/SVR3.11184432
+Node: SVR41186584
+Node: POSIX1188018
+Node: BTL1189399
+Node: POSIX/GNU1190128
+Node: Feature History1195906
+Node: Common Extensions1213081
+Node: Ranges and Locales1214364
+Ref: Ranges and Locales-Footnote-11218980
+Ref: Ranges and Locales-Footnote-21219007
+Ref: Ranges and Locales-Footnote-31219242
+Node: Contributors1219465
+Node: History summary1225462
+Node: Installation1226842
+Node: Gawk Distribution1227786
+Node: Getting1228270
+Node: Extracting1229233
+Node: Distribution contents1230871
+Node: Unix Installation1238013
+Node: Quick Installation1238817
+Node: Compiling with MPFR1241293
+Node: Shell Startup Files1241985
+Node: Additional Configuration Options1243074
+Node: Configuration Philosophy1245389
+Node: Compiling from Git1247785
+Node: Building the Documentation1248340
+Node: Non-Unix Installation1249724
+Node: PC Installation1250184
+Node: PC Binary Installation1251022
+Node: PC Compiling1251457
+Node: PC Using1252574
+Node: Cygwin1256127
+Node: MSYS1257351
+Node: VMS Installation1257953
+Node: VMS Compilation1258672
+Ref: VMS Compilation-Footnote-11259901
+Node: VMS Dynamic Extensions1259959
+Node: VMS Installation Details1261644
+Node: VMS Running1263906
+Node: VMS GNV1268185
+Node: Bugs1268899
+Node: Bug definition1269811
+Node: Bug address1272315
+Node: Usenet1275703
+Node: Performance bugs1276712
+Node: Asking for help1279633
+Node: Maintainers1281595
+Node: Other Versions1282789
+Node: Installation summary1290641
+Node: Notes1292005
+Node: Compatibility Mode1292799
+Node: Additions1293581
+Node: Accessing The Source1294506
+Node: Adding Code1295943
+Node: New Ports1302162
+Node: Derived Files1306537
+Ref: Derived Files-Footnote-11312197
+Ref: Derived Files-Footnote-21312232
+Ref: Derived Files-Footnote-31312830
+Node: Future Extensions1312944
+Node: Implementation Limitations1313602
+Node: Extension Design1314812
+Node: Old Extension Problems1315956
+Ref: Old Extension Problems-Footnote-11317474
+Node: Extension New Mechanism Goals1317531
+Ref: Extension New Mechanism Goals-Footnote-11320895
+Node: Extension Other Design Decisions1321084
+Node: Extension Future Growth1323197
+Node: Notes summary1323803
+Node: Basic Concepts1324961
+Node: Basic High Level1325642
+Ref: figure-general-flow1325924
+Ref: figure-process-flow1326609
+Ref: Basic High Level-Footnote-11329910
+Node: Basic Data Typing1330095
+Node: Glossary1333423
+Node: Copying1365308
+Node: GNU Free Documentation License1402851
+Node: Index1427971
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 4e1b2cb..c709944 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -21021,6 +21021,29 @@ function causes it to become a scalar variable 
 However, @code{isarray()} and @code{typeof()} are different; they do
 not change their arguments from untyped to unassigned.
+@cindex dark corner @subentry array elements created by reference
+By ``variable'' we mean one denoted by a simple identifier.  Array elements
+that come into existence simply by referencing them
+are different, they are automatically forced to be scalars. Consider:
+$ @kbd{gawk 'BEGIN @{ print typeof(x) @}'}
+@print{} untyped
+$ @kbd{gawk 'BEGIN @{ print typeof(x["foo"]) @}'}
+@print{} unassigned
+@end example
+@code{x[0]} comes into existence before it is passed to @code{typeof()};
+@code{typeof()} cannot tell that it didn't exist prior to being called.
+@c FIXME: For 5.2, this will change, update this bit of doc.
+This may change in a future release, whereby @command{gawk}
+would allow such an unassigned array element to be used for
+a multidimensional array, and not remain a scalar forever
+(or until deleted).
 @node I18N Functions
 @subsection String-Translation Functions
 @cindex @command{gawk} @subentry string-translation functions
diff --git a/doc/ b/doc/
index a9693ce..d874549 100644
--- a/doc/
+++ b/doc/
@@ -19933,6 +19933,29 @@ function causes it to become a scalar variable 
 However, @code{isarray()} and @code{typeof()} are different; they do
 not change their arguments from untyped to unassigned.
+@cindex dark corner @subentry array elements created by reference
+By ``variable'' we mean one denoted by a simple identifier.  Array elements
+that come into existence simply by referencing them
+are different, they are automatically forced to be scalars. Consider:
+$ @kbd{gawk 'BEGIN @{ print typeof(x) @}'}
+@print{} untyped
+$ @kbd{gawk 'BEGIN @{ print typeof(x["foo"]) @}'}
+@print{} unassigned
+@end example
+@code{x[0]} comes into existence before it is passed to @code{typeof()};
+@code{typeof()} cannot tell that it didn't exist prior to being called.
+@c FIXME: For 5.2, this will change, update this bit of doc.
+This may change in a future release, whereby @command{gawk}
+would allow such an unassigned array element to be used for
+a multidimensional array, and not remain a scalar forever
+(or until deleted).
 @node I18N Functions
 @subsection String-Translation Functions
 @cindex @command{gawk} @subentry string-translation functions


Summary of changes:
 doc/ChangeLog   |   5 +
 doc/   | 683 +++++++++++++++++++++++++++++---------------------------
 doc/gawk.texi   |  23 ++
 doc/ |  23 ++
 4 files changed, 402 insertions(+), 332 deletions(-)


reply via email to

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