Spezifikationsabgleich und Regressionsnachweise abschließen
This commit is contained in:
@@ -194,7 +194,6 @@ impl<'a> P<'a> {
|
||||
|
||||
fn parse_statement(&mut self) -> Option<Stmt> {
|
||||
let pos = self.pos();
|
||||
|
||||
// Zeilennummern und Labels nur am Zeilenanfang
|
||||
if self.at_line_start {
|
||||
if let TokenKind::Num(NumValue::Int(n)) = self.k() {
|
||||
@@ -611,7 +610,10 @@ impl<'a> P<'a> {
|
||||
self.advance();
|
||||
if self.k() == TokenKind::LParen {
|
||||
// Grafikform GET (x1,y1)-(x2,y2): deklariertes Non-Feature
|
||||
self.err("Feature unavailable");
|
||||
self.err(format!(
|
||||
"Feature unavailable: {}",
|
||||
if k == Kw::Get { "GET" } else { "PUT" }
|
||||
));
|
||||
self.sync();
|
||||
return None;
|
||||
}
|
||||
@@ -1804,7 +1806,7 @@ impl<'a> P<'a> {
|
||||
// Non-Feature — an der Syntax erkennbar, weil `DEF` sonst nur
|
||||
// `DEF FNname` einleitet.
|
||||
if matches!(self.k(), TokenKind::Ident { ref name, suffix: None } if name == "SEG") {
|
||||
self.err("Feature unavailable");
|
||||
self.err("Feature unavailable: DEF SEG");
|
||||
self.sync();
|
||||
return None;
|
||||
}
|
||||
@@ -1885,6 +1887,21 @@ impl<'a> P<'a> {
|
||||
self.sync();
|
||||
return None;
|
||||
}
|
||||
// Ausgeschlossene Anweisungen besitzen eigene Koordinaten-/Dateisyntax.
|
||||
// Erst Zuweisungen erkennen, damit gleichnamige Variablen/Arrays gültig bleiben.
|
||||
if let Expr::Name {
|
||||
name, suffix: None, ..
|
||||
} = &target
|
||||
{
|
||||
if matches!(
|
||||
name.as_str(),
|
||||
"CIRCLE" | "WINDOW" | "IOCTL" | "PSET" | "PRESET" | "PALETTE"
|
||||
) {
|
||||
self.err(format!("Feature unavailable: {name}"));
|
||||
self.sync();
|
||||
return None;
|
||||
}
|
||||
}
|
||||
// Ereignissteuerung: `TIMER ON`, `KEY(5) OFF`, `UEVENT STOP` …
|
||||
if let Expr::Name {
|
||||
ref name,
|
||||
|
||||
Reference in New Issue
Block a user