/* Generated by re2c */
#line 1 "reuse/inline_use_conditions.re"
// re2c $INPUT -o $OUTPUT -c -Wno-error-deprecated-eof-rule

// Test that rules are merged with correct priority. For normal rules the
// earliest rule has the highest priority (either inherited or local). For
// special rules * and <!> local condition specific rules have the highest
// priority, followed by inherited condition specific rules, followed by local
// generic (star condition) rules, followed by inherited generic rules. End of
// input rule used to be special but now it's just a normal rule.

#line 13 "reuse/inline_use_conditions.re"


#line 24 "reuse/inline_use_conditions.re"


#line 35 "reuse/inline_use_conditions.re"


// Expect:
//     c1: xdef1, xeof,  f1()
//     c2: def,   xeof2, f2(x)
//     c3: def,   yeof3, f3(y)

#line 27 "reuse/inline_use_conditions.c"
{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yycc1: goto yyc_c1;
		case yycc2: goto yyc_c2;
		case yycc3: goto yyc_c3;
	}
/* *********************************** */
yyc_c1:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy2;
		case 'b':
		case 'c': goto yy3;
		case 'd': goto yy4;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy5;
			goto yy1;
	}
yy1:
	++YYCURSOR;
	{ f1(); }
#line 18 "reuse/inline_use_conditions.re"
	{ return xdef1; }
#line 52 "reuse/inline_use_conditions.c"
yy2:
	++YYCURSOR;
	{ f1(); }
#line 16 "reuse/inline_use_conditions.re"
	{ return xa; }
#line 58 "reuse/inline_use_conditions.c"
yy3:
	++YYCURSOR;
	YYSETCONDITION(yycc2);
	{ f1(); }
#line 17 "reuse/inline_use_conditions.re"
	{ return xbc; }
#line 65 "reuse/inline_use_conditions.c"
yy4:
	++YYCURSOR;
	YYSETCONDITION(yycc3);
	{ f1(); }
#line 28 "reuse/inline_use_conditions.re"
	{ return ybd; }
#line 72 "reuse/inline_use_conditions.c"
yy5:
	{ f1(); }
#line 21 "reuse/inline_use_conditions.re"
	{ return xeof; }
#line 77 "reuse/inline_use_conditions.c"
/* *********************************** */
yyc_c2:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy8;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy9;
			goto yy7;
	}
yy7:
	++YYCURSOR;
	{ f2(x); }
#line 44 "reuse/inline_use_conditions.re"
	{ return def; }
#line 92 "reuse/inline_use_conditions.c"
yy8:
	++YYCURSOR;
	{ f2(x); }
#line 16 "reuse/inline_use_conditions.re"
	{ return xa; }
#line 98 "reuse/inline_use_conditions.c"
yy9:
	{ f2(x); }
#line 20 "reuse/inline_use_conditions.re"
	{ return xeof2; }
#line 103 "reuse/inline_use_conditions.c"
/* *********************************** */
yyc_c3:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy12;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy13;
			goto yy11;
	}
yy11:
	++YYCURSOR;
	{ f3(y); }
#line 44 "reuse/inline_use_conditions.re"
	{ return def; }
#line 118 "reuse/inline_use_conditions.c"
yy12:
	++YYCURSOR;
	{ f3(y); }
#line 27 "reuse/inline_use_conditions.re"
	{ return ya; }
#line 124 "reuse/inline_use_conditions.c"
yy13:
	{ f3(y); }
#line 31 "reuse/inline_use_conditions.re"
	{ return yeof3; }
#line 129 "reuse/inline_use_conditions.c"
}
#line 49 "reuse/inline_use_conditions.re"


// Expect:
//     c1: ydef1, yeof,  f(y)
//     c2: ydef,  xeof2, f2(x)
//     c3: ydef,  yeof3, f3(y)

#line 139 "reuse/inline_use_conditions.c"
{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yycc1: goto yyc_c1;
		case yycc3: goto yyc_c3;
		case yycc2: goto yyc_c2;
	}
/* *********************************** */
yyc_c1:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy16;
		case 'b':
		case 'd': goto yy17;
		case 'c': goto yy18;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy19;
			goto yy15;
	}
yy15:
	++YYCURSOR;
	{ f(y); }
#line 29 "reuse/inline_use_conditions.re"
	{ return ydef1; }
#line 164 "reuse/inline_use_conditions.c"
yy16:
	++YYCURSOR;
	{ f(y); }
#line 27 "reuse/inline_use_conditions.re"
	{ return ya; }
#line 170 "reuse/inline_use_conditions.c"
yy17:
	++YYCURSOR;
	YYSETCONDITION(yycc3);
	{ f(y); }
#line 28 "reuse/inline_use_conditions.re"
	{ return ybd; }
#line 177 "reuse/inline_use_conditions.c"
yy18:
	++YYCURSOR;
	YYSETCONDITION(yycc2);
	{ f(y); }
#line 17 "reuse/inline_use_conditions.re"
	{ return xbc; }
#line 184 "reuse/inline_use_conditions.c"
yy19:
	{ f(y); }
#line 32 "reuse/inline_use_conditions.re"
	{ return yeof; }
#line 189 "reuse/inline_use_conditions.c"
/* *********************************** */
yyc_c3:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy22;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy23;
			goto yy21;
	}
yy21:
	++YYCURSOR;
	{ f3(y); }
#line 30 "reuse/inline_use_conditions.re"
	{ return ydef; }
#line 204 "reuse/inline_use_conditions.c"
yy22:
	++YYCURSOR;
	{ f3(y); }
#line 27 "reuse/inline_use_conditions.re"
	{ return ya; }
#line 210 "reuse/inline_use_conditions.c"
yy23:
	{ f3(y); }
#line 31 "reuse/inline_use_conditions.re"
	{ return yeof3; }
#line 215 "reuse/inline_use_conditions.c"
/* *********************************** */
yyc_c2:
	yych = *YYCURSOR;
	switch (yych) {
		case 'a': goto yy26;
		default:
			if (YYLIMIT <= YYCURSOR) goto yy27;
			goto yy25;
	}
yy25:
	++YYCURSOR;
	{ f2(x); }
#line 30 "reuse/inline_use_conditions.re"
	{ return ydef; }
#line 230 "reuse/inline_use_conditions.c"
yy26:
	++YYCURSOR;
	{ f2(x); }
#line 16 "reuse/inline_use_conditions.re"
	{ return xa; }
#line 236 "reuse/inline_use_conditions.c"
yy27:
	{ f2(x); }
#line 20 "reuse/inline_use_conditions.re"
	{ return xeof2; }
#line 241 "reuse/inline_use_conditions.c"
}
#line 58 "reuse/inline_use_conditions.re"

reuse/inline_use_conditions.re:27:24: warning: unreachable rule in condition 'c1' (shadowed by rule at line 16) [-Wunreachable-rules]
reuse/inline_use_conditions.re:32:24: warning: unreachable end-of-input rule at line 32 in condition 'c1' (shadowed by rule at line 21) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:45:12: warning: unreachable end-of-input rule at line 45 in condition 'c1' (shadowed by rule at line 21) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:46:12: warning: unreachable end-of-input rule at line 46 in condition 'c2' (shadowed by rule at line 20) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:32:24: warning: unreachable end-of-input rule at line 32 in condition 'c2' (shadowed by rule at line 20) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:45:12: warning: unreachable end-of-input rule at line 45 in condition 'c2' (shadowed by rule at line 20) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:32:24: warning: unreachable end-of-input rule at line 32 in condition 'c3' (shadowed by rule at line 31) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:45:12: warning: unreachable end-of-input rule at line 45 in condition 'c3' (shadowed by rule at line 31) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:16:24: warning: unreachable rule in condition 'c1' (shadowed by rule at line 27) [-Wunreachable-rules]
reuse/inline_use_conditions.re:21:24: warning: unreachable end-of-input rule at line 21 in condition 'c1' (shadowed by rule at line 32) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:21:24: warning: unreachable end-of-input rule at line 21 in condition 'c3' (shadowed by rule at line 31) [-Wdeprecated-eof-rule]
reuse/inline_use_conditions.re:21:24: warning: unreachable end-of-input rule at line 21 in condition 'c2' (shadowed by rule at line 20) [-Wdeprecated-eof-rule]
