Home | History | Annotate | Line # | Download | only in unit-tests
directive-elif.mk revision 1.8
      1 # $NetBSD: directive-elif.mk,v 1.8 2023/06/01 20:56:35 rillig Exp $
      2 #
      3 # Tests for the .elif directive.
      4 #
      5 # Misspellings of the .elif directive are not always detected.  They are only
      6 # detected if the conditional branch directly above it is taken.  In all other
      7 # cases, make skips over the skipped branch as fast as possible, looking only
      8 # at the initial '.' of the line and whether the directive is one of the known
      9 # conditional directives.  All other directives are silently ignored, as they
     10 # could be variable assignments or dependency declarations as well, and
     11 # deciding this would cost time.
     12 
     13 
     14 # TODO: Implementation
     15 
     16 
     17 # Misspelling '.elsif' below an .if branch that is not taken.
     18 .if 0
     19 .  info This branch is not taken.
     20 # As of 2020-12-19, the misspelling is not recognized as a conditional
     21 # directive and is thus silently skipped.
     22 #
     23 # Since the .if condition evaluated to false, this whole branch is not taken.
     24 .elsif 0
     25 .  info XXX: This misspelling is not detected.
     26 .  info This branch is not taken.
     27 # Even if the misspelling were detected, the branch would not be taken
     28 # since the condition of the '.elsif' evaluates to false as well.
     29 .endif
     30 
     31 
     32 # Misspelling '.elsif' below an .if branch that is not taken.
     33 .if 0
     34 .  info This branch is not taken.
     35 # As of 2020-12-19, the misspelling is not recognized as a conditional
     36 # directive and is thus silently skipped.  Since the .if condition evaluated
     37 # to false, this whole branch is not taken.
     38 .elsif 1
     39 .  info XXX: This misspelling is not detected.
     40 # If the misspelling were detected, this branch would be taken.
     41 .endif
     42 
     43 
     44 # Misspelling '.elsif' below an .if branch that is taken.
     45 .if 1
     46 # This misspelling is in an active branch and is therefore detected.
     47 # expect+1: Unknown directive "elsif"
     48 .elsif 0
     49 # The only thing that make detects here is a misspelled directive, make
     50 # doesn't recognize that it was meant to be a conditional directive.
     51 # Therefore the branch continues here, even though the '.elsif' condition
     52 # evaluates to false.
     53 # expect+1: This branch is taken.
     54 .  info This branch is taken.
     55 .endif
     56 
     57 
     58 # Misspelling '.elsif' below an .if branch that is taken.
     59 .if 1
     60 # The misspelling is in an active branch and is therefore detected.
     61 # expect+1: Unknown directive "elsif"
     62 .elsif 1
     63 # Since both conditions evaluate to true, this branch is taken no matter
     64 # whether make detects a misspelling or not.
     65 # expect+1: This branch is taken.
     66 .  info This branch is taken.
     67 .endif
     68 
     69 
     70 # Misspelling '.elsif' in a skipped branch below a branch that was taken.
     71 .if 1
     72 # expect+1: This branch is taken.
     73 .  info This branch is taken.
     74 .elif 0
     75 .  info This branch is not taken.
     76 .elsif 1
     77 .  info XXX: This misspelling is not detected.
     78 .endif
     79 
     80 
     81 # Misspelling '.elsif' in an .else branch that is not taken.
     82 .if 1
     83 .else
     84 .  info This branch is not taken.
     85 .elsif 1
     86 .  info XXX: This misspelling is not detected.
     87 .endif
     88 
     89 
     90 # Misspelling '.elsif' in an .else branch that is taken.
     91 .if 0
     92 .else
     93 # expect+1: Unknown directive "elsif"
     94 .elsif 1
     95 # expect+1: This misspelling is detected.
     96 .  info This misspelling is detected.
     97 # expect+1: This branch is taken because of the .else.
     98 .  info This branch is taken because of the .else.
     99 .endif
    100 
    101 
    102 # Misspellings for .elif in a .elif branch that is not taken.
    103 .if 0
    104 .  info This branch is not taken.
    105 .elif 0				# ok
    106 .  info This branch is not taken.
    107 .elsif 0
    108 .  info XXX: This misspelling is not detected.
    109 .  info This branch is not taken.
    110 .elseif 0
    111 .  info XXX: This misspelling is not detected.
    112 .  info This branch is not taken.
    113 .endif
    114 
    115 
    116 # expect+1: What happens on misspelling in a skipped branch?
    117 .info What happens on misspelling in a skipped branch?
    118 .if 0
    119 .  info 0-then
    120 .elsif 1
    121 .  info XXX: This misspelling is not detected.
    122 .  info 1-elsif
    123 .elsif 2
    124 .  info XXX: This misspelling is not detected.
    125 .  info 2-elsif
    126 .else
    127 # expect+1: else
    128 .  info else
    129 .endif
    130 
    131 # expect+1: What happens on misspelling in a taken branch?
    132 .info What happens on misspelling in a taken branch?
    133 .if 1
    134 # expect+1: 1-then
    135 .  info 1-then
    136 # expect+1: Unknown directive "elsif"
    137 .elsif 1
    138 # expect+1: 1-elsif
    139 .  info 1-elsif
    140 # expect+1: Unknown directive "elsif"
    141 .elsif 2
    142 # expect+1: 2-elsif
    143 .  info 2-elsif
    144 .else
    145 .  info else
    146 .endif
    147 
    148 # expect+1: if-less elif
    149 .elif 0
    150 
    151 .if 1
    152 .else
    153 # expect+1: warning: extra elif
    154 .elif
    155 .endif
    156 
    157 all:
    158