/* $NetBSD: indent_off_on.c,v 1.15 2023/06/04 22:20:04 rillig Exp $ */
/*
* Tests for the comments 'INDENT OFF' and 'INDENT ON', which temporarily
* disable formatting, copying the input directly to the output. Internally,
* indent still keeps track of the number of braces and other indentation.
*/
//indent input
{}
/*INDENT OFF*/
/*INDENT ON*/
{}
//indent end
//indent run
{
}
/*INDENT OFF*/
/*INDENT ON*/
{
}
//indent end
//indent input
{}
/*INDENT OFF*/
/*INDENT ON*/
//indent end
//indent run
{
}
/*INDENT OFF*/
/*INDENT ON*/
//indent end
//indent input
{}
/* INDENT OFF */
/* INDENT ON */
{}
//indent end
//indent run
{
}
/* INDENT OFF */
/* INDENT ON */
{
}
//indent end
//indent input
{}
/* INDENT OFF */
/* INDENT ON */
{}
//indent end
//indent run
{
}
/* INDENT OFF */
/* INDENT ON */
{
}
//indent end
/*
* The INDENT comments can be written without space between the words, but
* nobody does this.
*/
//indent input
int decl ;
/*INDENTOFF*/
int decl ;
/*INDENTON*/
int decl ;
//indent end
//indent run -di0
int decl;
/*INDENTOFF*/
int decl ;
/*INDENTON*/
int decl;
//indent end
/*
* Any whitespace around the 'INDENT ON/OFF' is ignored, as is any whitespace
* between the two words.
*/
//indent input
int decl ;
/* INDENT OFF */
int decl ;
/* INDENT ON */
int decl ;
//indent end
//indent run -di0
int decl;
/* INDENT OFF */
int decl ;
/* INDENT ON */
int decl;
//indent end
//indent input
/*INDENT OFF*/
/* No formatting takes place here. */
int format( void ) {{{
/*INDENT ON*/
}}}
//indent end
//indent run
/*INDENT OFF*/
/* No formatting takes place here. */
int format( void ) {{{
/*INDENT ON*/
}
}
}
//indent end
//indent input
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENT */
void indent_on ( void ) ;
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENT ON */
void indent_on ( void ) ; /* the comment may be indented */
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENTATION ON */
void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
/* INDENT ON * */
void indent_still_off ( void ) ; /* due to the extra '*' at the end */
/* INDENT ON */
void indent_on ( void ) ;
/* INDENT: OFF */
void indent_still_on ( void ) ; /* due to the colon in the middle */
/* INDENT OFF */ /* extra comment */
void indent_still_on ( void ) ; /* due to the extra comment to the right */
//indent end
//indent run
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENT */
void indent_on(void);
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENT ON */
void indent_on(void); /* the comment may be indented */
/* INDENT OFF */
void indent_off ( void ) ;
/* INDENTATION ON */
void indent_still_off ( void ) ; /* due to the word 'INDENTATION' */
/* INDENT ON * */
void indent_still_off ( void ) ; /* due to the extra '*' at the end */
/* INDENT ON */
void indent_on(void);
/* INDENT: OFF */
void indent_still_on(void); /* due to the colon in the middle */
/* $ The extra comment got moved to a separate line, but indenting is still */
/* $ on because the 'INDENT OFF' comment was not in a line of its own. */
/* INDENT OFF */
/* extra comment */
void indent_still_on(void); /* due to the extra comment to the
* right */
//indent end
/*
* Try to confuse indent by having a string literal that has an embedded
* INDENT comment. Indent doesn't get confused though because it requires the
* INDENT comment to go from the very beginning of the line to the very end of
* the line.
*/
//indent input
const char *str = "\
/* INDENT OFF */\
" , ch;
//indent end
//indent run
const char *str = "\
/* INDENT OFF */\
", ch;
//indent end
/*
* The keywords in the INDENT comments must all be uppercase.
*/
//indent input
int on ;
/* indent off */
int still_on ;
/* INDENT off */
int still_on ;
/* indent OFF */
int still_on ;
/* INDENT OFF */
int finally_off ;
//indent end
//indent run -di0
int on;
/* indent off */
int still_on;
/* INDENT off */
int still_on;
/* indent OFF */
int still_on;
/* INDENT OFF */
int finally_off ;
//indent end
/*
* Ensure that in 'INDENT OFF' mode, no blank line is added between lines, even
* when requested via the -bacc option.
*/
//indent input
/* INDENT OFF */
int declaration;
#if 0
#endif
int declaration;
/* INDENT ON */
//indent end
//indent run-equals-input -bacc
/*
* If an 'INDENT OFF' comment directly follows a line continuation, the line
* continuation is dropped but the rest of the line is still formatted.
*/
//indent input
int x ; \
/* INDENT OFF */
int y ;
/* INDENT ON */
int z ;
//indent end
//indent run
int x;
/* INDENT OFF */
int y ;
/* INDENT ON */
int z;
//indent end