:3
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use anyhow::Result;
|
||||
use anyhow::{Result, bail};
|
||||
|
||||
use crate::{common::loc::LocBox, error, logger::log, parser::Delimiter, tokeniser::Token};
|
||||
use crate::{common::loc::LocBox, lerror, parser::{Delimiter, ast::{expr::Expr, literal::Literal}}, tokeniser::Token};
|
||||
|
||||
use super::{ast::{typ::Type, TokenType}, expr::parse_expr, utils, Keyword, Punctuation};
|
||||
|
||||
@@ -26,9 +26,18 @@ pub fn parse_type(tokens: &mut Vec<Token>) -> Result<LocBox<Type>> {
|
||||
let itm_typ = parse_type(tokens)?;
|
||||
if let Some(_) = utils::check_consume(tokens, TokenType::Punct(Punctuation::Semi)) {
|
||||
let count = parse_expr(tokens, 0, false)?.unwrap();
|
||||
|
||||
match count.inner() {
|
||||
Expr::Literal(Literal::Number(_)) |
|
||||
Expr::Path(_) => (),
|
||||
_ => {
|
||||
lerror!(count.loc(), "Only literal numbers are allowed in sized arrays");
|
||||
bail!("")
|
||||
}
|
||||
}
|
||||
typ = Type::SizedArray {
|
||||
inner: Box::new(itm_typ.inner().clone()),
|
||||
count
|
||||
count: count
|
||||
};
|
||||
} else {
|
||||
typ = Type::UnsizedArray {
|
||||
|
||||
Reference in New Issue
Block a user