else{ctx.addDiag(lineIdx,0,rawLine.length,"Jede Datei muss mit 'tpl 1.x module <name>;' beginnen.",vscode.DiagnosticSeverity.Error);ctx.hasModuleDef=true;}
ctx.addDiag(lineIdx,0,line.length,"Ein 'metadata' Block auf Modul-Ebene ist Pflicht, bevor andere Blöcke definiert werden.",vscode.DiagnosticSeverity.Error);
ctx.addDiag(unclosedLine,0,lines[unclosedLine].length,"Block 'define' wurde nicht mit 'end define;' geschlossen!",vscode.DiagnosticSeverity.Error);
}
for(constblockofctx.openControlBlocks){
ctx.addDiag(block.lineIdx,0,lines[block.lineIdx].length,`Block '${block.type}' wurde nicht mit 'end${block.type};' geschlossen!`,vscode.DiagnosticSeverity.Error);
if(ctx.inBlock!=='none'){ctx.addDiag(lineIdx,0,line.length,"Ein Definitions-Block muss auf oberster Ebene deklariert werden.",vscode.DiagnosticSeverity.Error);}
if(ctx.inBlock!=='none'){ctx.addDiag(lineIdx,0,line.length,"Eine Enumeration muss auf oberster Ebene deklariert werden.",vscode.DiagnosticSeverity.Error);}
ctx.inBlock='enumeration';
}
elseif(line.startsWith('configuration ')){
if(ctx.inBlock!=='none'){ctx.addDiag(lineIdx,0,line.length,"Eine Konfiguration muss auf oberster Ebene deklariert werden.",vscode.DiagnosticSeverity.Error);}
if(ctx.inBlock!=='none'){ctx.addDiag(lineIdx,0,7,"Ein Pattern/Syncmapping kann nicht innerhalb eines anderen Blocks deklariert werden.",vscode.DiagnosticSeverity.Error);}
if(ctx.inBlock!=='none'){ctx.addDiag(lineIdx,0,5,"Eine Tabelle kann nicht innerhalb eines anderen Blocks deklariert werden.",vscode.DiagnosticSeverity.Error);}
if(ctx.activePhaseName!==""){ctx.addDiag(ctx.activePhaseLine,0,ctx.activePhaseName.length,`Block '${ctx.activePhaseName}' wurde nicht mit 'end${ctx.activePhaseName};' geschlossen.`,vscode.DiagnosticSeverity.Error);}
if(ctx.currentPatternPhase>=phaseEnum){ctx.addDiag(lineIdx,0,phaseName.length,`'${phaseName}' Block ist hier nicht erlaubt.`,vscode.DiagnosticSeverity.Error);}
if(ctx.activePhaseName!==""){ctx.addDiag(ctx.activePhaseLine,0,ctx.activePhaseName.length,`Block '${ctx.activePhaseName}' wurde nicht mit 'end${ctx.activePhaseName};' geschlossen.`,vscode.DiagnosticSeverity.Error);}
constdiag=ctx.addDiag(lineIdx,0,rawLine.length,`Im Body fehlt das Log-Statement mit dem Pattern-Namen. Bsp: ${expectedLog}`,vscode.DiagnosticSeverity.Error);
if(ctx.activePhaseName!==""){ctx.addDiag(ctx.activePhaseLine,0,ctx.activePhaseName.length,`Block '${ctx.activePhaseName}' wurde nicht mit 'end${ctx.activePhaseName};' geschlossen.`,vscode.DiagnosticSeverity.Error);}