@@ -707,6 +707,21 @@ pub enum AnalyzerError {
707707 token_source : TokenSource ,
708708 } ,
709709
710+ #[ diagnostic(
711+ severity( Error ) ,
712+ code( invalid_for_range) ,
713+ help( "use a range with `..` or `..=`, e.g. `0..N`" ) ,
714+ url( "https://doc.veryl-lang.org/book/07_appendix/02_semantic_error.html#{}" , self . code( ) . unwrap( ) )
715+ ) ]
716+ #[ error( "for-loop range must use `..` or `..=`; a bare expression is not a valid range" ) ]
717+ InvalidForRange {
718+ #[ source_code]
719+ input : MultiSources ,
720+ #[ label( "Error location" ) ]
721+ error_location : SourceSpan ,
722+ token_source : TokenSource ,
723+ } ,
724+
710725 #[ diagnostic(
711726 severity( Error ) ,
712727 code( invalid_for_step) ,
@@ -1982,6 +1997,7 @@ impl AnalyzerError {
19821997 AnalyzerError :: InvalidEmbedIdentifier { input, .. } => input,
19831998 AnalyzerError :: InvalidEnumVariant { input, .. } => input,
19841999 AnalyzerError :: InvalidFactor { input, .. } => input,
2000+ AnalyzerError :: InvalidForRange { input, .. } => input,
19852001 AnalyzerError :: InvalidForStep { input, .. } => input,
19862002 AnalyzerError :: InvalidIdentifier { input, .. } => input,
19872003 AnalyzerError :: InvalidImport { input, .. } => input,
@@ -2109,6 +2125,7 @@ impl AnalyzerError {
21092125 AnalyzerError :: InvalidRangeAssign { token_source, .. } => * token_source,
21102126 AnalyzerError :: NonConstantSelectWidth { token_source, .. } => * token_source,
21112127 AnalyzerError :: InvalidStatement { token_source, .. } => * token_source,
2128+ AnalyzerError :: InvalidForRange { token_source, .. } => * token_source,
21122129 AnalyzerError :: InvalidForStep { token_source, .. } => * token_source,
21132130 AnalyzerError :: InvalidTbUsage { token_source, .. } => * token_source,
21142131 AnalyzerError :: MissingTbPort { token_source, .. } => * token_source,
@@ -2564,6 +2581,13 @@ impl AnalyzerError {
25642581 token_source : token. source ( ) ,
25652582 }
25662583 }
2584+ pub fn invalid_for_range ( token : & TokenRange ) -> Self {
2585+ AnalyzerError :: InvalidForRange {
2586+ input : source ( token) ,
2587+ error_location : token. into ( ) ,
2588+ token_source : token. source ( ) ,
2589+ }
2590+ }
25672591 pub fn invalid_for_step ( cause : InvalidForStepKind , token : & TokenRange ) -> Self {
25682592 AnalyzerError :: InvalidForStep {
25692593 cause,
0 commit comments