158 lines
4.2 KiB
Makefile
158 lines
4.2 KiB
Makefile
# $NetBSD: directive-elif.mk,v 1.8 2023/06/01 20:56:35 rillig Exp $
|
|
#
|
|
# Tests for the .elif directive.
|
|
#
|
|
# Misspellings of the .elif directive are not always detected. They are only
|
|
# detected if the conditional branch directly above it is taken. In all other
|
|
# cases, make skips over the skipped branch as fast as possible, looking only
|
|
# at the initial '.' of the line and whether the directive is one of the known
|
|
# conditional directives. All other directives are silently ignored, as they
|
|
# could be variable assignments or dependency declarations as well, and
|
|
# deciding this would cost time.
|
|
|
|
|
|
# TODO: Implementation
|
|
|
|
|
|
# Misspelling '.elsif' below an .if branch that is not taken.
|
|
.if 0
|
|
. info This branch is not taken.
|
|
# As of 2020-12-19, the misspelling is not recognized as a conditional
|
|
# directive and is thus silently skipped.
|
|
#
|
|
# Since the .if condition evaluated to false, this whole branch is not taken.
|
|
.elsif 0
|
|
. info XXX: This misspelling is not detected.
|
|
. info This branch is not taken.
|
|
# Even if the misspelling were detected, the branch would not be taken
|
|
# since the condition of the '.elsif' evaluates to false as well.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' below an .if branch that is not taken.
|
|
.if 0
|
|
. info This branch is not taken.
|
|
# As of 2020-12-19, the misspelling is not recognized as a conditional
|
|
# directive and is thus silently skipped. Since the .if condition evaluated
|
|
# to false, this whole branch is not taken.
|
|
.elsif 1
|
|
. info XXX: This misspelling is not detected.
|
|
# If the misspelling were detected, this branch would be taken.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' below an .if branch that is taken.
|
|
.if 1
|
|
# This misspelling is in an active branch and is therefore detected.
|
|
# expect+1: Unknown directive "elsif"
|
|
.elsif 0
|
|
# The only thing that make detects here is a misspelled directive, make
|
|
# doesn't recognize that it was meant to be a conditional directive.
|
|
# Therefore the branch continues here, even though the '.elsif' condition
|
|
# evaluates to false.
|
|
# expect+1: This branch is taken.
|
|
. info This branch is taken.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' below an .if branch that is taken.
|
|
.if 1
|
|
# The misspelling is in an active branch and is therefore detected.
|
|
# expect+1: Unknown directive "elsif"
|
|
.elsif 1
|
|
# Since both conditions evaluate to true, this branch is taken no matter
|
|
# whether make detects a misspelling or not.
|
|
# expect+1: This branch is taken.
|
|
. info This branch is taken.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' in a skipped branch below a branch that was taken.
|
|
.if 1
|
|
# expect+1: This branch is taken.
|
|
. info This branch is taken.
|
|
.elif 0
|
|
. info This branch is not taken.
|
|
.elsif 1
|
|
. info XXX: This misspelling is not detected.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' in an .else branch that is not taken.
|
|
.if 1
|
|
.else
|
|
. info This branch is not taken.
|
|
.elsif 1
|
|
. info XXX: This misspelling is not detected.
|
|
.endif
|
|
|
|
|
|
# Misspelling '.elsif' in an .else branch that is taken.
|
|
.if 0
|
|
.else
|
|
# expect+1: Unknown directive "elsif"
|
|
.elsif 1
|
|
# expect+1: This misspelling is detected.
|
|
. info This misspelling is detected.
|
|
# expect+1: This branch is taken because of the .else.
|
|
. info This branch is taken because of the .else.
|
|
.endif
|
|
|
|
|
|
# Misspellings for .elif in a .elif branch that is not taken.
|
|
.if 0
|
|
. info This branch is not taken.
|
|
.elif 0 # ok
|
|
. info This branch is not taken.
|
|
.elsif 0
|
|
. info XXX: This misspelling is not detected.
|
|
. info This branch is not taken.
|
|
.elseif 0
|
|
. info XXX: This misspelling is not detected.
|
|
. info This branch is not taken.
|
|
.endif
|
|
|
|
|
|
# expect+1: What happens on misspelling in a skipped branch?
|
|
.info What happens on misspelling in a skipped branch?
|
|
.if 0
|
|
. info 0-then
|
|
.elsif 1
|
|
. info XXX: This misspelling is not detected.
|
|
. info 1-elsif
|
|
.elsif 2
|
|
. info XXX: This misspelling is not detected.
|
|
. info 2-elsif
|
|
.else
|
|
# expect+1: else
|
|
. info else
|
|
.endif
|
|
|
|
# expect+1: What happens on misspelling in a taken branch?
|
|
.info What happens on misspelling in a taken branch?
|
|
.if 1
|
|
# expect+1: 1-then
|
|
. info 1-then
|
|
# expect+1: Unknown directive "elsif"
|
|
.elsif 1
|
|
# expect+1: 1-elsif
|
|
. info 1-elsif
|
|
# expect+1: Unknown directive "elsif"
|
|
.elsif 2
|
|
# expect+1: 2-elsif
|
|
. info 2-elsif
|
|
.else
|
|
. info else
|
|
.endif
|
|
|
|
# expect+1: if-less elif
|
|
.elif 0
|
|
|
|
.if 1
|
|
.else
|
|
# expect+1: warning: extra elif
|
|
.elif
|
|
.endif
|
|
|
|
all:
|