FUNNELWEB LISTING FILE ====================== Dump of mapped file "<>". MEMORY DUMP OF MAPPED FILE ========================== +-------------------------------------------------+------------------+ | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | +-------------------------------------------------+------------------+ | 50 52 30 38 3A 20 54 65 73 74 20 73 65 6D 61 6E | PR08: Test seman | | 74 69 63 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 | tic checking of | | 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E | macro definition | | 73 2E 0A 0A 54 72 69 70 20 70 61 72 73 65 72 20 | s...Trip parser | | 74 6F 20 62 65 20 73 75 72 65 20 74 68 61 74 20 | to be sure that | | 77 65 20 77 6F 6E 27 74 20 67 65 74 20 61 6E 79 | we won't get any | | 20 6F 75 74 70 75 74 20 66 69 6C 65 73 21 0A 40 | output files!.@ | | 3E 0A 0A 31 2E 20 46 69 6C 65 20 6D 61 63 72 6F | >..1. File macro | | 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 73 2E | has parameters. | | 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 | Error..@O@@(@3@)@{Wal | | 72 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | rus@}.@A@ | | 0A 0A 32 2E 20 46 69 6C 65 20 6D 61 63 72 6F 20 | ..2. File macro | | 69 73 20 61 64 64 69 74 69 76 65 2E 20 45 72 72 | is additive. Err | | 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 68 20 32 40 | or..@O@+=@{Walrus@}.@A | | 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @..3. Fil | | 65 20 6D 61 63 72 6F 20 68 61 73 20 74 6F 6F 20 | e macro has too | | 6C 6F 6E 67 20 61 20 6E 61 6D 65 2E 20 54 68 65 | long a name. The | | 20 74 65 73 74 20 6E 61 6D 65 20 68 61 73 20 31 | test name has 1 | | 32 30 30 20 63 68 61 72 61 63 74 65 72 73 2E 20 | 200 characters. | | 45 72 72 2E 0A 4E 6F 74 65 3A 20 54 68 69 73 20 | Err..Note: This | | 74 65 73 74 20 63 61 6E 27 74 20 74 65 73 74 20 | test can't test | | 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67 | the error messag | | 65 20 69 66 20 74 68 65 20 6D 61 78 69 6D 75 6D | e if the maximum | | 20 6C 65 6E 67 74 68 20 6F 66 20 61 0A 6D 61 63 | length of a.mac | | 72 6F 20 6E 61 6D 65 20 69 73 20 6C 65 73 73 20 | ro name is less | | 74 68 61 6E 20 74 68 65 20 6D 61 78 69 6D 75 6D | than the maximum | | 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 66 69 6C | length of a fil | | 65 20 6E 61 6D 65 20 61 73 20 74 68 65 20 6E 61 | e name as the na | | 6D 65 0A 65 72 72 6F 72 20 69 73 20 63 61 75 67 | me.error is caug | | 68 74 20 66 69 72 73 74 2E 0A 40 70 20 6D 61 78 | ht first..@p max | | 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ | | 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 74 | length = infinit | | 79 0A 40 4F 40 3C 31 32 33 34 35 36 37 38 39 30 | y.@O@<1234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | | 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | | 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | | 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | | 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | | 35 36 37 38 39 30 40 3E 40 7B 40 7D 0A 40 41 40 | 567890@>@{@}.@A@ | | 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | ..4. File | | 20 6D 61 63 72 6F 20 68 61 73 20 7A 65 72 6F 20 | macro has zero | | 6F 72 20 6D 61 6E 79 20 61 74 74 72 69 62 75 74 | or many attribut | | 65 73 2E 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 | es. Error..@O@@Z@{Walr | | 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 | us@}.@A@. | | 0A 40 4F 40 3C 53 6C 6F 74 68 20 34 40 3E 40 4D | .@O@@M | | 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C 45 | @{Walrus@}.@A@..@O@@Z@M@{Walrus | | 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@..5 | | 2E 20 50 72 65 76 69 6F 75 73 20 64 65 66 69 6E | . Previous defin | | 69 74 69 6F 6E 20 69 73 20 66 75 6C 6C 2C 20 63 | ition is full, c | | 75 72 72 65 6E 74 20 69 73 20 61 64 64 69 74 69 | urrent is additi | | 76 65 2E 0A 40 24 40 3C 57 61 6C 72 75 73 20 31 | ve..@$@==@{Sloth@}.@$ | | 40 3C 57 61 6C 72 75 73 20 31 40 3E 2B 3D 40 7B | @+=@{ | | 41 61 72 64 76 61 72 6B 40 7D 0A 40 41 40 3C 45 | Aardvark@}.@A@..6. Previo | | 75 73 20 64 65 66 69 6E 69 74 69 6F 6E 20 69 73 | us definition is | | 20 61 64 64 69 74 69 76 65 2C 20 63 75 72 72 65 | additive, curre | | 6E 74 20 69 73 20 66 75 6C 6C 2E 0A 40 24 40 3C | nt is full..@$@< | | 57 61 6C 72 75 73 20 32 40 3E 2B 3D 40 7B 53 6C | Walrus 2@>+=@{Sl | | 6F 74 68 40 7D 0A 40 24 40 3C 57 61 6C 72 75 73 | oth@}.@$@==@{Aardvark | | 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@..7 | | 2E 20 4E 6F 6E 2D 66 69 72 73 74 20 62 6F 64 79 | . Non-first body | | 20 70 61 72 74 20 6F 66 20 70 61 72 74 69 61 6C | part of partial | | 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 2E 0A | has parameter.. | | 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@@(@ | | 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. | | 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@@(@ | | 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. | | 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@..8. Z | | 65 72 6F 20 6F 72 20 6D 61 6E 79 20 61 74 74 72 | ero or many attr | | 69 62 75 74 65 73 20 6F 6E 20 6E 6F 6E 2D 66 69 | ibutes on non-fi | | 72 73 74 20 62 6F 64 79 20 70 61 72 74 20 6F 66 | rst body part of | | 20 61 64 64 69 74 69 76 65 2E 0A 40 24 40 3C 45 | additive..@$@@Z@M+=@ | | 7B 54 75 72 6B 65 79 40 7D 0A 40 24 40 3C 45 6C | {Turkey@}.@$@@Z@M+=@{ | | 54 75 72 6B 65 79 40 7D 0A 40 41 40 3C 45 72 72 | Turkey@}.@A@..9. Check th | | 61 74 20 6E 6F 6E 2D 65 78 69 73 74 65 6E 74 20 | at non-existent | | 66 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 | formal parameter | | 73 20 61 72 65 20 63 61 75 67 68 74 2E 0A 0A 40 | s are caught...@ | | 24 40 3C 5A 65 72 6F 40 3E 40 5A 40 7B 53 6C 6F | $@@Z@{Slo | | 74 68 40 31 57 61 6C 72 75 73 40 7D 0A 40 41 40 | th@1Walrus@}.@A@ | | 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | ..@$@@(@1@)@Z@{Slot | | 68 40 32 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@2Walrus@}.@A@< | | 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | | 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4D 61 6E 79 | oint@>..@$@@(@7@)@Z@{Slot | | 68 40 38 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@8Walrus@}.@A@< | | 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | | 6F 69 6E 74 40 3E 0A | oint@>. | +-------------------------------------------------+------------------+ =========================== Start of LINE LIST DUMP ============================ Globl Local| Text -----------+-------------------------------------------------------------------- 00001 00001| PR08: Test semantic checking of macro definitions.<010> 00002 00002| <010> 00003 00003| Trip parser to be sure that we won't get any output files!<010> 00004 00004| @><010> 00005 00005| <010> 00006 00006| 1. File macro has parameters. Error.<010> 00007 00007| @O@@(@3@)@{Walrus@}<010> 00008 00008| @A@<010> 00009 00009| <010> 00010 00010| 2. File macro is additive. Error.<010> 00011 00011| @O@+=@{Walrus@}<010> 00012 00012| @A@<010> 00013 00013| <010> 00014 00014| 3. File macro has too long a name. The test name has 1200 characters. Err.<010> 00015 00015| Note: This test can't test the error message if the maximum length of a<010> 00016 00016| macro name is less than the maximum length of a file name as the name<010> 00017 00017| error is caught first.<010> 00018 00018| @p maximum_input_line_length = infinity<010> 00019 00019| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010> 00020 00020| @A@<010> 00021 00021| <010> 00022 00022| 4. File macro has zero or many attributes. Error.<010> 00023 00023| @O@@Z@{Walrus@}<010> 00024 00024| @A@<010> 00025 00025| <010> 00026 00026| @O@@M@{Walrus@}<010> 00027 00027| @A@<010> 00028 00028| <010> 00029 00029| @O@@Z@M@{Walrus@}<010> 00030 00030| @A@<010> 00031 00031| <010> 00032 00032| 5. Previous definition is full, current is additive.<010> 00033 00033| @$@==@{Sloth@}<010> 00034 00034| @$@+=@{Aardvark@}<010> 00035 00035| @A@<010> 00036 00036| <010> 00037 00037| 6. Previous definition is additive, current is full.<010> 00038 00038| @$@+=@{Sloth@}<010> 00039 00039| @$@==@{Aardvark@}<010> 00040 00040| @A@<010> 00041 00041| <010> 00042 00042| 7. Non-first body part of partial has parameter.<010> 00043 00043| @$@@(@3@)+=@{Turkey@}<010> 00044 00044| @$@@(@3@)+=@{Turkey@}<010> 00045 00045| @A@<010> 00046 00046| <010> 00047 00047| 8. Zero or many attributes on non-first body part of additive.<010> 00048 00048| @$@@Z@M+=@{Turkey@}<010> 00049 00049| @$@@Z@M+=@{Turkey@}<010> 00050 00050| @A@<010> 00051 00051| <010> 00052 00052| 9. Check that non-existent formal parameters are caught.<010> 00053 00053| <010> 00054 00054| @$@@Z@{Sloth@1Walrus@}<010> 00055 00055| @A@<010> 00056 00056| <010> 00057 00057| @$@@(@1@)@Z@{Sloth@2Walrus@}<010> 00058 00058| @A@<010> 00059 00059| <010> 00060 00060| @$@@(@7@)@Z@{Sloth@8Walrus@}<010> 00061 00061| @A@<010> 00062 00062| <010> -----------+-------------------------------------------------------------------- Globl Local| Text ============================ End of LINE LIST DUMP ============================= =========================== Start of TOKEN LIST DUMP =========================== Summary: There are 245 tokens in the token list. Line[Column]: Token Description ------------------------------- 0001[01]: Text. Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010> <010> Trip parser to be sure that we won't get any output files!<010> " 0004[01]: @> Close name. 0004[03]: Text. Text scrap[Grey]="<010> <010> 1. File macro has parameters. Error.<010> " 0007[01]: @F File defn. 0007[03]: @< Open name. 0007[05]: Text. Text scrap[Grey]="Sloth 1" 0007[12]: @> Close name. 0007[14]: @( Open param. 0007[16]: @n Parameter. Parameterno=3. 0007[18]: @} Close param. 0007[20]: @{ Open defn. 0007[22]: Text. Text scrap[Grey]="Walrus" 0007[28]: @} Close defn. 0007[30]: Text. Text scrap[White]="<010> " 0008[01]: @A New section (Level 1). 0008[03]: @< Open name. 0008[05]: Text. Text scrap[Grey]="Error recovery point" 0008[25]: @> Close name. 0008[27]: Text. Text scrap[Grey]="<010> <010> 2. File macro is additive. Error.<010> " 0011[01]: @F File defn. 0011[03]: @< Open name. 0011[05]: Text. Text scrap[Grey]="Sloth 2" 0011[12]: @> Close name. 0011[14]: Text. Text scrap[Grey]="+=" 0011[16]: @{ Open defn. 0011[18]: Text. Text scrap[Grey]="Walrus" 0011[24]: @} Close defn. 0011[26]: Text. Text scrap[White]="<010> " 0012[01]: @A New section (Level 1). 0012[03]: @< Open name. 0012[05]: Text. Text scrap[Grey]="Error recovery point" 0012[25]: @> Close name. 0012[27]: Text. Text scrap[Grey]="<010> <010> 3. File macro has too long a name. The test name has 1200 characters. Err.<010> Note: This test can't test the error message if the maximum length of a<010> macro name is less than the maximum length of a file name as the name<010> error is caught first.<010> " 0019[01]: @F File defn. 0019[03]: @< Open name. 0019[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" 0019[1205]: @> Close name. 0019[1207]: @{ Open defn. 0019[1209]: @} Close defn. 0019[1211]: Text. Text scrap[White]="<010> " 0020[01]: @A New section (Level 1). 0020[03]: @< Open name. 0020[05]: Text. Text scrap[Grey]="Error recovery point" 0020[25]: @> Close name. 0020[27]: Text. Text scrap[Grey]="<010> <010> 4. File macro has zero or many attributes. Error.<010> " 0023[01]: @F File defn. 0023[03]: @< Open name. 0023[05]: Text. Text scrap[Grey]="Sloth 3" 0023[12]: @> Close name. 0023[14]: @Z Zero calls. 0023[16]: @{ Open defn. 0023[18]: Text. Text scrap[Grey]="Walrus" 0023[24]: @} Close defn. 0023[26]: Text. Text scrap[White]="<010> " 0024[01]: @A New section (Level 1). 0024[03]: @< Open name. 0024[05]: Text. Text scrap[Grey]="Error recovery point" 0024[25]: @> Close name. 0024[27]: Text. Text scrap[White]="<010> <010> " 0026[01]: @F File defn. 0026[03]: @< Open name. 0026[05]: Text. Text scrap[Grey]="Sloth 4" 0026[12]: @> Close name. 0026[14]: @M Many calls. 0026[16]: @{ Open defn. 0026[18]: Text. Text scrap[Grey]="Walrus" 0026[24]: @} Close defn. 0026[26]: Text. Text scrap[White]="<010> " 0027[01]: @A New section (Level 1). 0027[03]: @< Open name. 0027[05]: Text. Text scrap[Grey]="Error recovery point" 0027[25]: @> Close name. 0027[27]: Text. Text scrap[White]="<010> <010> " 0029[01]: @F File defn. 0029[03]: @< Open name. 0029[05]: Text. Text scrap[Grey]="Sloth 5" 0029[12]: @> Close name. 0029[14]: @Z Zero calls. 0029[16]: @M Many calls. 0029[18]: @{ Open defn. 0029[20]: Text. Text scrap[Grey]="Walrus" 0029[26]: @} Close defn. 0029[28]: Text. Text scrap[White]="<010> " 0030[01]: @A New section (Level 1). 0030[03]: @< Open name. 0030[05]: Text. Text scrap[Grey]="Error recovery point" 0030[25]: @> Close name. 0030[27]: Text. Text scrap[Grey]="<010> <010> 5. Previous definition is full, current is additive.<010> " 0033[01]: @$ Macro defn. 0033[03]: @< Open name. 0033[05]: Text. Text scrap[Grey]="Walrus 1" 0033[13]: @> Close name. 0033[15]: Text. Text scrap[Grey]="==" 0033[17]: @{ Open defn. 0033[19]: Text. Text scrap[Grey]="Sloth" 0033[24]: @} Close defn. 0033[26]: Text. Text scrap[White]="<010> " 0034[01]: @$ Macro defn. 0034[03]: @< Open name. 0034[05]: Text. Text scrap[Grey]="Walrus 1" 0034[13]: @> Close name. 0034[15]: Text. Text scrap[Grey]="+=" 0034[17]: @{ Open defn. 0034[19]: Text. Text scrap[Grey]="Aardvark" 0034[27]: @} Close defn. 0034[29]: Text. Text scrap[White]="<010> " 0035[01]: @A New section (Level 1). 0035[03]: @< Open name. 0035[05]: Text. Text scrap[Grey]="Error recovery point" 0035[25]: @> Close name. 0035[27]: Text. Text scrap[Grey]="<010> <010> 6. Previous definition is additive, current is full.<010> " 0038[01]: @$ Macro defn. 0038[03]: @< Open name. 0038[05]: Text. Text scrap[Grey]="Walrus 2" 0038[13]: @> Close name. 0038[15]: Text. Text scrap[Grey]="+=" 0038[17]: @{ Open defn. 0038[19]: Text. Text scrap[Grey]="Sloth" 0038[24]: @} Close defn. 0038[26]: Text. Text scrap[White]="<010> " 0039[01]: @$ Macro defn. 0039[03]: @< Open name. 0039[05]: Text. Text scrap[Grey]="Walrus 2" 0039[13]: @> Close name. 0039[15]: Text. Text scrap[Grey]="==" 0039[17]: @{ Open defn. 0039[19]: Text. Text scrap[Grey]="Aardvark" 0039[27]: @} Close defn. 0039[29]: Text. Text scrap[White]="<010> " 0040[01]: @A New section (Level 1). 0040[03]: @< Open name. 0040[05]: Text. Text scrap[Grey]="Error recovery point" 0040[25]: @> Close name. 0040[27]: Text. Text scrap[Grey]="<010> <010> 7. Non-first body part of partial has parameter.<010> " 0043[01]: @$ Macro defn. 0043[03]: @< Open name. 0043[05]: Text. Text scrap[Grey]="Unicorn" 0043[12]: @> Close name. 0043[14]: @( Open param. 0043[16]: @n Parameter. Parameterno=3. 0043[18]: @} Close param. 0043[20]: Text. Text scrap[Grey]="+=" 0043[22]: @{ Open defn. 0043[24]: Text. Text scrap[Grey]="Turkey" 0043[30]: @} Close defn. 0043[32]: Text. Text scrap[White]="<010> " 0044[01]: @$ Macro defn. 0044[03]: @< Open name. 0044[05]: Text. Text scrap[Grey]="Unicorn" 0044[12]: @> Close name. 0044[14]: @( Open param. 0044[16]: @n Parameter. Parameterno=3. 0044[18]: @} Close param. 0044[20]: Text. Text scrap[Grey]="+=" 0044[22]: @{ Open defn. 0044[24]: Text. Text scrap[Grey]="Turkey" 0044[30]: @} Close defn. 0044[32]: Text. Text scrap[White]="<010> " 0045[01]: @A New section (Level 1). 0045[03]: @< Open name. 0045[05]: Text. Text scrap[Grey]="Error recovery point" 0045[25]: @> Close name. 0045[27]: Text. Text scrap[Grey]="<010> <010> 8. Zero or many attributes on non-first body part of additive.<010> " 0048[01]: @$ Macro defn. 0048[03]: @< Open name. 0048[05]: Text. Text scrap[Grey]="Elephant" 0048[13]: @> Close name. 0048[15]: @Z Zero calls. 0048[17]: @M Many calls. 0048[19]: Text. Text scrap[Grey]="+=" 0048[21]: @{ Open defn. 0048[23]: Text. Text scrap[Grey]="Turkey" 0048[29]: @} Close defn. 0048[31]: Text. Text scrap[White]="<010> " 0049[01]: @$ Macro defn. 0049[03]: @< Open name. 0049[05]: Text. Text scrap[Grey]="Elephant" 0049[13]: @> Close name. 0049[15]: @Z Zero calls. 0049[17]: @M Many calls. 0049[19]: Text. Text scrap[Grey]="+=" 0049[21]: @{ Open defn. 0049[23]: Text. Text scrap[Grey]="Turkey" 0049[29]: @} Close defn. 0049[31]: Text. Text scrap[White]="<010> " 0050[01]: @A New section (Level 1). 0050[03]: @< Open name. 0050[05]: Text. Text scrap[Grey]="Error recovery point" 0050[25]: @> Close name. 0050[27]: Text. Text scrap[Grey]="<010> <010> 9. Check that non-existent formal parameters are caught.<010> <010> " 0054[01]: @$ Macro defn. 0054[03]: @< Open name. 0054[05]: Text. Text scrap[Grey]="Zero" 0054[09]: @> Close name. 0054[11]: @Z Zero calls. 0054[13]: @{ Open defn. 0054[15]: Text. Text scrap[Grey]="Sloth" 0054[20]: @n Parameter. Parameterno=1. 0054[22]: Text. Text scrap[Grey]="Walrus" 0054[28]: @} Close defn. 0054[30]: Text. Text scrap[White]="<010> " 0055[01]: @A New section (Level 1). 0055[03]: @< Open name. 0055[05]: Text. Text scrap[Grey]="Error recovery point" 0055[25]: @> Close name. 0055[27]: Text. Text scrap[White]="<010> <010> " 0057[01]: @$ Macro defn. 0057[03]: @< Open name. 0057[05]: Text. Text scrap[Grey]="One" 0057[08]: @> Close name. 0057[10]: @( Open param. 0057[12]: @n Parameter. Parameterno=1. 0057[14]: @} Close param. 0057[16]: @Z Zero calls. 0057[18]: @{ Open defn. 0057[20]: Text. Text scrap[Grey]="Sloth" 0057[25]: @n Parameter. Parameterno=2. 0057[27]: Text. Text scrap[Grey]="Walrus" 0057[33]: @} Close defn. 0057[35]: Text. Text scrap[White]="<010> " 0058[01]: @A New section (Level 1). 0058[03]: @< Open name. 0058[05]: Text. Text scrap[Grey]="Error recovery point" 0058[25]: @> Close name. 0058[27]: Text. Text scrap[White]="<010> <010> " 0060[01]: @$ Macro defn. 0060[03]: @< Open name. 0060[05]: Text. Text scrap[Grey]="Many" 0060[09]: @> Close name. 0060[11]: @( Open param. 0060[13]: @n Parameter. Parameterno=7. 0060[15]: @} Close param. 0060[17]: @Z Zero calls. 0060[19]: @{ Open defn. 0060[21]: Text. Text scrap[Grey]="Sloth" 0060[26]: @n Parameter. Parameterno=8. 0060[28]: Text. Text scrap[Grey]="Walrus" 0060[34]: @} Close defn. 0060[36]: Text. Text scrap[White]="<010> " 0061[01]: @A New section (Level 1). 0061[03]: @< Open name. 0061[05]: Text. Text scrap[Grey]="Error recovery point" 0061[25]: @> Close name. 0061[27]: Text. Text scrap[White]="<010> " 0062[01]: End Of File. ============================ End of TOKEN LIST DUMP ============================ ========================== Start of MACRO TABLE DUMP =========================== ------------------- Start of Macro Dump -------------------- Macro Name : "#file" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : Yes. Many Calls? : Yes. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows: ---- Start of Expression ---- --- Start Special Function --- ---- End Special Function ---- ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "#line" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : Yes. Many Calls? : Yes. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows: ---- Start of Expression ---- --- Start Special Function --- ---- End Special Function ---- ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "#timestamp" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : Yes. Many Calls? : Yes. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows: ---- Start of Expression ---- --- Start Special Function --- ---- End Special Function ---- ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Elephant" Defined? : Yes. Parameters : 0 Additive? : Yes. Zero Calls? : Yes. Many Calls? : Yes. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Turkey" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Many" Defined? : Yes. Parameters : 7 Additive? : No. Zero Calls? : Yes. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Sloth" ------ End Text Element ------ -- Start Parameter Element -- Parameter number=8. Parameter is of macro "Many". --- End Parameter Element --- ----- Start Text Element ----- Text scrap[Grey]="Walrus" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "One" Defined? : Yes. Parameters : 1 Additive? : No. Zero Calls? : Yes. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Sloth" ------ End Text Element ------ -- Start Parameter Element -- Parameter number=2. Parameter is of macro "One". --- End Parameter Element --- ----- Start Text Element ----- Text scrap[Grey]="Walrus" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Sloth 1" Defined? : No. -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Sloth 2" Defined? : No. -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Sloth 3" Defined? : No. -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Sloth 4" Defined? : No. -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Sloth 5" Defined? : No. -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Unicorn" Defined? : Yes. Parameters : 3 Additive? : Yes. Zero Calls? : No. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Turkey" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Walrus 1" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : No. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Sloth" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Walrus 2" Defined? : Yes. Parameters : 0 Additive? : Yes. Zero Calls? : No. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Sloth" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- ------------------- Start of Macro Dump -------------------- Macro Name : "Zero" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : Yes. Many Calls? : No. Output File?: No. Automatic Line Directive Macro?: No. Call list : Macro body : --Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows: ---- Start of Expression ---- ----- Start Text Element ----- Text scrap[Grey]="Sloth" ------ End Text Element ------ -- Start Parameter Element -- Parameter number=1. Parameter is of macro "Zero". --- End Parameter Element --- ----- Start Text Element ----- Text scrap[Grey]="Walrus" ------ End Text Element ------ ----- End of Expression ----- ---End of List of Body Parts--- -------------------- End of Macro Dump --------------------- =========================== End of MACRO TABLE DUMP ============================ ========================= Start of DOCUMENT LIST DUMP ========================== TEXT COMPONENT: Pos(L,C)=(1,1). -- Start of Text Scrap List -- Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010> <010> Trip parser to be sure that we won't get any output files!<010> " --- End of Text Scrap List --- TEXT COMPONENT: Pos(L,C)=(4,3). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 1. File macro has parameters. Error.<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "1", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(8,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 2. File macro is additive. Error.<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "2", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(12,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 3. File macro has too long a name. The test name has 1200 characters. Err.<010> Note: This test can't test the error message if the maximum length of a<010> macro name is less than the maximum length of a file name as the name<010> error is caught first.<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "3", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(20,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 4. File macro has zero or many attributes. Error.<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "4", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(24,27). -- Start of Text Scrap List -- Text scrap[White]="<010> <010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "5", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(27,27). -- Start of Text Scrap List -- Text scrap[White]="<010> <010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "6", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(30,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 5. Previous definition is full, current is additive.<010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(33,26). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "7", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(35,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 6. Previous definition is additive, current is full.<010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(38,26). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "8", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(40,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 7. Non-first body part of partial has parameter.<010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(43,32). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "9", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(45,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 8. Zero or many attributes on non-first body part of additive.<010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(48,31). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "10", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(50,27). -- Start of Text Scrap List -- Text scrap[Grey]="<010> <010> 9. Check that non-existent formal parameters are caught.<010> <010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(54,30). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "11", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(55,27). -- Start of Text Scrap List -- Text scrap[White]="<010> <010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(57,35). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "12", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(58,27). -- Start of Text Scrap List -- Text scrap[White]="<010> <010> " --- End of Text Scrap List --- MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1). Part 1 of macro @. TEXT COMPONENT: Pos(L,C)=(60,36). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- TYPESETTER DIRECTIVE COMPONENT: Section "13", Section name="Error recovery point". TEXT COMPONENT: Pos(L,C)=(61,27). -- Start of Text Scrap List -- Text scrap[White]="<010> " --- End of Text Scrap List --- ========================== End of DOCUMENT LIST DUMP =========================== Global Local| Input File ------------+------------------------------------------------------------------- 1 1| PR08: Test semantic checking of macro definitions. 2 2| 3 3| Trip parser to be sure that we won't get any output files! 4 4| @> Error|.^The parser was at the top level and was expecting |.^one of: {Directive, Text, Macro definition, EOF}. 5 5| 6 6| 1. File macro has parameters. Error. 7 7| @O@@(@3@)@{Walrus@} |...^Macro definition ignored. Error|................^Macros attached to output files cannot be parameterized. |................^Reason: No actual parameters would be available during |................^ output file generation. |....................^Skipping after error to the next major construct... 8 8| @A@ |.^...skipped to here after the error. 9 9| 10 10| 2. File macro is additive. Error. 11 11| @O@+=@{Walrus@} |...^Macro definition ignored. Error|..............^Macros attached to output files cannot be additive. |..............^Reason: Preventing this makes it easy to find output |..............^file macros later, because there will be exactly one |..............^@O declaration in the input file for each output file. |..............^To do what you are trying to do, just create an additive |..............^bridging macro, like this: |..............^ @O@@{@@} |..............^ @$@+=@{void stringhack()...@} |..............^ @$@+=@{main()...@} |................^Skipping after error to the next major construct... 12 12| @A@ |.^...skipped to here after the error. 13 13| 14 14| 3. File macro has too long a name. The test name has 1200 characters. Err. 15 15| Note: This test can't test the error message if the maximum length of a 16 16| macro name is less than the maximum length of a file name as the name 17 17| error is caught first. 18 18| @p maximum_input_line_length = infinity 19 19| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@} Error|.....^Name is too long. |.....^The maximum length of a legal name is 80 characters. |.....^Skipping after error to the next major construct... 20 20| @A@ |.^...skipped to here after the error. 21 21| 22 22| 4. File macro has zero or many attributes. Error. 23 23| @O@@Z@{Walrus@} |...^Macro definition ignored. Error|..............^Macros attached to output files cannot have @Z or @M. |..............^Reason: They are always called once to generate their |..............^output file and they cannot be called from other macros. |..............^Hence they are always called exactly once and so there |..............^can be no need for @Z or @M in their declarations. |................^Skipping after error to the next major construct... 24 24| @A@ |.^...skipped to here after the error. 25 25| 26 26| @O@@M@{Walrus@} |...^Macro definition ignored. Error|..............^Macros attached to output files cannot have @Z or @M. |..............^Reason: They are always called once to generate their |..............^output file and they cannot be called from other macros. |..............^Hence they are always called exactly once and so there |..............^can be no need for @Z or @M in their declarations. |................^Skipping after error to the next major construct... 27 27| @A@ |.^...skipped to here after the error. 28 28| 29 29| @O@@Z@M@{Walrus@} |...^Macro definition ignored. Error|..............^Macros attached to output files cannot have @Z or @M. |..............^Reason: They are always called once to generate their |..............^output file and they cannot be called from other macros. |..............^Hence they are always called exactly once and so there |..............^can be no need for @Z or @M in their declarations. |..................^Skipping after error to the next major construct... 30 30| @A@ |.^...skipped to here after the error. 31 31| 32 32| 5. Previous definition is full, current is additive. 33 33| @$@==@{Sloth@} 34 34| @$@+=@{Aardvark@} Error|...^A full definition of this macro appears at line 33. |...^Full and additive definitions of the same macro cannot coexist. |...^Macro definition ignored. |.................^Skipping after error to the next major construct... 35 35| @A@ |.^...skipped to here after the error. 36 36| 37 37| 6. Previous definition is additive, current is full. 38 38| @$@+=@{Sloth@} 39 39| @$@==@{Aardvark@} Error|...^An additive definition of this macro appears at line 38. |...^Full and additive definitions of the same macro cannot coexist. |...^Macro definition ignored. |.................^Skipping after error to the next major construct... 40 40| @A@ |.^...skipped to here after the error. 41 41| 42 42| 7. Non-first body part of partial has parameter. 43 43| @$@@(@3@)+=@{Turkey@} 44 44| @$@@(@3@)+=@{Turkey@} |...^Macro definition ignored. Error|................^The formal parameter list of an additive macro |................^must be placed only in the first definition part. |................^The first part of this macro appears at line 43. |......................^Skipping after error to the next major construct... 45 45| @A@ |.^...skipped to here after the error. 46 46| 47 47| 8. Zero or many attributes on non-first body part of additive. 48 48| @$@@Z@M+=@{Turkey@} 49 49| @$@@Z@M+=@{Turkey@} |...^Macro definition ignored. Error|...............^@Z and @M modifiers for additive macros must |...............^be placed only in the first definition part. |...............^The first part of this macro appears at line 48. |.....................^Skipping after error to the next major construct... 50 50| @A@ |.^...skipped to here after the error. 51 51| 52 52| 9. Check that non-existent formal parameters are caught. 53 53| 54 54| @$@@Z@{Sloth@1Walrus@} Error|....................^Macro being defined has only 0 parameters. 55 55| @A@ 56 56| 57 57| @$@@(@1@)@Z@{Sloth@2Walrus@} Error|.........................^Macro being defined has only 1 parameter. 58 58| @A@ 59 59| 60 60| @$@@(@7@)@Z@{Sloth@8Walrus@} Error|..........................^Macro being defined has only 7 parameters. 61 61| @A@ | ------------+------------------------------------------------------------------- There were 14 Errors.