tamer: asg::air: {=>diagnostic_}todo!

I forgot about my `diagnostic_todo!` macro!  The purpose was to help guide
development by obviating what comes next in test failures.

DEV-13708
Mike Gerwitz 2023-03-17 10:37:14 -04:00
parent 56d92fe22b
commit 473991abaf
2 changed files with 29 additions and 9 deletions

View File

@ -38,7 +38,9 @@
use self::expr::AirExprAggregateReachable; use self::expr::AirExprAggregateReachable;
use super::{graph::object::Pkg, Asg, AsgError, ObjectIndex}; use super::{graph::object::Pkg, Asg, AsgError, ObjectIndex};
use crate::{parse::prelude::*, sym::SymbolId}; use crate::{
diagnose::Annotate, diagnostic_todo, parse::prelude::*, sym::SymbolId,
};
use std::fmt::{Debug, Display}; use std::fmt::{Debug, Display};
#[macro_use] #[macro_use]
@ -197,8 +199,11 @@ impl ParseState for AirAggregate {
Self::delegate_tpl(asg, oi_pkg, stored_expr, tplst, ttok) Self::delegate_tpl(asg, oi_pkg, stored_expr, tplst, ttok)
} }
(PkgTpl(..), AirPkg(PkgStart(..))) => { (PkgTpl(..), tok @ AirPkg(PkgStart(..))) => {
todo!("templates cannot contain packages") diagnostic_todo!(
vec![tok.note("for this token")],
"templates cannot contain packages"
)
} }
(Empty, AirPkg(PkgEnd(span))) => { (Empty, AirPkg(PkgEnd(span))) => {

View File

@ -31,6 +31,8 @@ use super::{
AirExprAggregate, AirExprAggregate,
}; };
use crate::{ use crate::{
diagnose::Annotate,
diagnostic_todo,
fmt::{DisplayWrapper, TtQuote}, fmt::{DisplayWrapper, TtQuote},
parse::prelude::*, parse::prelude::*,
span::Span, span::Span,
@ -183,7 +185,10 @@ impl ParseState for AirTplAggregate {
.incomplete() .incomplete()
} }
(Toplevel(..), AirTpl(TplStart(_span))) => todo!("nested tpl open"), (Toplevel(..), AirTpl(TplStart(span))) => diagnostic_todo!(
vec![span.note("for this template")],
"nested tpl open"
),
(Toplevel(oi_pkg, tpl, expr), AirBind(BindIdent(id))) => asg (Toplevel(oi_pkg, tpl, expr), AirBind(BindIdent(id))) => asg
.lookup_or_missing(id) .lookup_or_missing(id)
@ -201,11 +206,17 @@ impl ParseState for AirTplAggregate {
Toplevel(..), Toplevel(..),
tok @ AirTpl(TplMetaStart(..) | TplMetaEnd(..) | TplApply(..)), tok @ AirTpl(TplMetaStart(..) | TplMetaEnd(..) | TplApply(..)),
) => { ) => {
todo!("Toplevel meta {tok:?}") diagnostic_todo!(
vec![tok.note("for this token")],
"Toplevel meta"
)
} }
(Toplevel(..), tok @ AirTpl(TplLexeme(..))) => { (Toplevel(..), tok @ AirTpl(TplLexeme(..))) => {
todo!("err: Toplevel lexeme {tok:?} (must be within metavar)") diagnostic_todo!(
vec![tok.note("for this token")],
"err: Toplevel lexeme {tok:?} (must be within metavar)"
)
} }
(Toplevel(oi_pkg, tpl, _expr_done), AirTpl(TplEnd(span))) => { (Toplevel(oi_pkg, tpl, _expr_done), AirTpl(TplEnd(span))) => {
@ -255,8 +266,11 @@ impl ParseState for AirTplAggregate {
Self::delegate_expr(asg, oi_pkg, tpl, expr, etok) Self::delegate_expr(asg, oi_pkg, tpl, expr, etok)
} }
(TplExpr(..), AirTpl(TplStart(_))) => { (TplExpr(..), AirTpl(TplStart(span))) => {
todo!("nested template (template-generated template)") diagnostic_todo!(
vec![span.note("for this token")],
"nested template (template-generated template)"
)
} }
( (
@ -266,7 +280,8 @@ impl ParseState for AirTplAggregate {
| TplApply(..), | TplApply(..),
), ),
) => { ) => {
todo!( diagnostic_todo!(
vec![tok.note("for this token")],
"metasyntactic token in non-tpl-toplevel context: {tok:?}" "metasyntactic token in non-tpl-toplevel context: {tok:?}"
) )
} }