14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
{
auto& dm = DiagnosticsManager::GetInstance();
auto level = GetBreakableScopeLevels( p.context() );
if( p.isInParenExpr() || !level )
{
dm.emitSyntaxErrorMessage( locationId, "the break statement is not allowed here.", 0 );
return false;
}
auto cfg = GetCFG( p.context() );
if( !cfg->currentBB() || cfg->currentBB()->terminator() )
{
|
>
|
|
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
{
auto& dm = DiagnosticsManager::GetInstance();
auto level = GetBreakableScopeLevels( p.context() );
if( p.isInParenExpr() || !level )
{
dm.emitSyntaxErrorMessage(
locationId, "the break statement is not allowed here.", 0 );
return false;
}
auto cfg = GetCFG( p.context() );
if( !cfg->currentBB() || cfg->currentBB()->terminator() )
{
|
37
38
39
40
41
42
43
44
|
cfg->currentBB()->setTerminator( cir::Break( level ) );
return true;
};
RegisterRule( e, "break"_sid, Rule( handleBreak ) );
}
}
|
|
|
38
39
40
41
42
43
44
45
|
cfg->currentBB()->setTerminator( cir::Break( level ) );
return true;
};
RegisterRule( e, "break"_sid, Rule( handleBreak ) );
}
} // namespace goose::builtins
|