Home | History | Annotate | Line # | Download | only in unit-tests
directive-elif.mk revision 1.7
      1 # $NetBSD: directive-elif.mk,v 1.7 2020/12/19 19:49:01 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 .elsif 0
     48 # The only thing that make detects here is a misspelled directive, make
     49 # doesn't recognize that it was meant to be a conditional directive.
     50 # Therefore the branch continues here, even though the '.elsif' condition
     51 # evaluates to false.
     52 .  info This branch is taken.
     53 .endif
     54 
     55 
     56 # Misspelling '.elsif' below an .if branch that is taken.
     57 .if 1
     58 # As of 2020-12-19, the misspelling is in an active branch and is therefore
     59 # detected.
     60 .elsif 1
     61 # Since both conditions evaluate to true, this branch is taken no matter
     62 # whether make detects a misspelling or not.
     63 .  info This branch is taken.
     64 .endif
     65 
     66 
     67 # Misspelling '.elsif' in a skipped branch below a branch that was taken.
     68 .if 1
     69 .  info This branch is taken.
     70 .elif 0
     71 .  info This branch is not taken.
     72 .elsif 1
     73 .  info XXX: This misspelling is not detected.
     74 .endif
     75 
     76 
     77 # Misspelling '.elsif' in an .else branch that is not taken.
     78 .if 1
     79 .else
     80 .  info This branch is not taken.
     81 .elsif 1
     82 .  info XXX: This misspelling is not detected.
     83 .endif
     84 
     85 
     86 # Misspelling '.elsif' in an .else branch that is taken.
     87 .if 0
     88 .else
     89 .elsif 1
     90 .  info This misspelling is detected.
     91 .  info This branch is taken because of the .else.
     92 .endif
     93 
     94 
     95 # Misspellings for .elif in a .elif branch that is not taken.
     96 .if 0
     97 .  info This branch is not taken.
     98 .elif 0				# ok
     99 .  info This branch is not taken.
    100 .elsif 0
    101 .  info XXX: This misspelling is not detected.
    102 .  info This branch is not taken.
    103 .elseif 0
    104 .  info XXX: This misspelling is not detected.
    105 .  info This branch is not taken.
    106 .endif
    107 
    108 
    109 .info What happens on misspelling in a skipped branch?
    110 .if 0
    111 .  info 0-then
    112 .elsif 1
    113 .  info XXX: This misspelling is not detected.
    114 .  info 1-elsif
    115 .elsif 2
    116 .  info XXX: This misspelling is not detected.
    117 .  info 2-elsif
    118 .else
    119 .  info else
    120 .endif
    121 
    122 .info What happens on misspelling in a taken branch?
    123 .if 1
    124 .  info 1-then
    125 .elsif 1
    126 .  info 1-elsif
    127 .elsif 2
    128 .  info 2-elsif
    129 .else
    130 .  info else
    131 .endif
    132 
    133 # Expect: "if-less elif"
    134 .elif 0
    135 
    136 .if 1
    137 .else
    138 # Expect: "warning: extra elif"
    139 .elif
    140 .endif
    141 
    142 all:
    143