Skip to content

Commit 52bdb9b

Browse files
committed
minor: remove decl from TypeAst.
1 parent 62e1d23 commit 52bdb9b

File tree

3 files changed

+14
-56
lines changed

3 files changed

+14
-56
lines changed

tigerc/src/translate.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,7 @@ impl<F: Frame + PartialEq + Eq> Translate<F> {
157157

158158
pub fn translate(&mut self, ty_ast: &type_ast::TypeAst) -> ir::Exp {
159159
let level = Level::<F>::outermost();
160-
match ty_ast {
161-
type_ast::TypeAst::TypeDecl(decl) => unreachable!(),
162-
type_ast::TypeAst::TypeExpr(exp) => self.translate_expr(&level, exp),
163-
}
160+
self.translate_expr(&level, &ty_ast.0)
164161
}
165162

166163
fn translate_decl(&mut self, level: &Level<F>, decl: &type_ast::TypeDecl) -> Option<Statement> {

tigerc/src/type_ast.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ pub struct Function {
4545
// typed AST...
4646

4747
#[derive(Debug, PartialEq, Eq)]
48-
pub enum TypeAst {
49-
TypeDecl(TypeDecl),
50-
TypeExpr(TypeExpr),
51-
}
48+
pub struct TypeAst(pub TypeExpr);
5249

5350
use crate::ast::Value;
5451

tigerc/src/type_inference.rs

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ impl TypeInference {
193193
}
194194

195195
pub fn infer(&mut self, ast: &ast::Ast) -> Result<type_ast::TypeAst> {
196-
Ok(type_ast::TypeAst::TypeExpr(self.infer_expr(&ast.0)?))
196+
Ok(type_ast::TypeAst(self.infer_expr(&ast.0)?))
197197
}
198198

199199
// TODO maybe return void
@@ -786,11 +786,7 @@ mod tests {
786786
let e = parser.parse();
787787
let mut ti = TypeInference::new();
788788
let te = ti.infer(&e).unwrap();
789-
if let type_ast::TypeAst::TypeExpr(te) = te {
790-
assert_eq!(te.ty, type_ast::Type::Nothing);
791-
} else {
792-
panic!("Unexpected decl.");
793-
}
789+
assert_eq!(te.0.ty, type_ast::Type::Nothing);
794790
}
795791

796792
#[test]
@@ -803,11 +799,7 @@ mod tests {
803799
let e = parser.parse();
804800
let mut ti = TypeInference::new();
805801
let te = ti.infer(&e).unwrap();
806-
if let type_ast::TypeAst::TypeExpr(te) = te {
807-
assert_eq!(te.ty, type_ast::Type::Nil);
808-
} else {
809-
panic!("Unexpected decl.");
810-
}
802+
assert_eq!(te.0.ty, type_ast::Type::Nil);
811803
}
812804

813805
#[test]
@@ -820,11 +812,7 @@ mod tests {
820812
let e = parser.parse();
821813
let mut ti = TypeInference::new();
822814
let te = ti.infer(&e).unwrap();
823-
if let type_ast::TypeAst::TypeExpr(te) = te {
824-
assert_eq!(te.ty, type_ast::Type::Int);
825-
} else {
826-
panic!("Unexpected decl.");
827-
}
815+
assert_eq!(te.0.ty, type_ast::Type::Int);
828816
}
829817

830818
#[test]
@@ -837,11 +825,7 @@ mod tests {
837825
let e = parser.parse();
838826
let mut ti = TypeInference::new();
839827
let te = ti.infer(&e).unwrap();
840-
if let type_ast::TypeAst::TypeExpr(te) = te {
841-
assert_eq!(te.ty, type_ast::Type::Int);
842-
} else {
843-
panic!("Unexpected decl.");
844-
}
828+
assert_eq!(te.0.ty, type_ast::Type::Int);
845829
}
846830

847831
#[test]
@@ -854,11 +838,7 @@ mod tests {
854838
let e = parser.parse();
855839
let mut ti = TypeInference::new();
856840
let te = ti.infer(&e).unwrap();
857-
if let type_ast::TypeAst::TypeExpr(te) = te {
858-
assert_eq!(te.ty, type_ast::Type::Int);
859-
} else {
860-
panic!("Unexpected decl.");
861-
}
841+
assert_eq!(te.0.ty, type_ast::Type::Int);
862842
}
863843

864844
#[test]
@@ -871,11 +851,7 @@ mod tests {
871851
let e = parser.parse();
872852
let mut ti = TypeInference::new();
873853
let te = ti.infer(&e).unwrap();
874-
if let type_ast::TypeAst::TypeExpr(te) = te {
875-
assert_eq!(te.ty, type_ast::Type::Int);
876-
} else {
877-
panic!("Unexpected decl.");
878-
}
854+
assert_eq!(te.0.ty, type_ast::Type::Int);
879855
}
880856

881857
#[test]
@@ -888,11 +864,7 @@ mod tests {
888864
let e = parser.parse();
889865
let mut ti = TypeInference::new();
890866
let te = ti.infer(&e).unwrap();
891-
if let type_ast::TypeAst::TypeExpr(te) = te {
892-
assert_eq!(te.ty, type_ast::Type::Int);
893-
} else {
894-
panic!("Unexpected decl.");
895-
}
867+
assert_eq!(te.0.ty, type_ast::Type::Int);
896868
}
897869

898870
#[test]
@@ -905,11 +877,7 @@ mod tests {
905877
let e = parser.parse();
906878
let mut ti = TypeInference::new();
907879
let te = ti.infer(&e).unwrap();
908-
if let type_ast::TypeAst::TypeExpr(te) = te {
909-
assert_eq!(te.ty, type_ast::Type::Nothing);
910-
} else {
911-
panic!("Unexpected decl.");
912-
}
880+
assert_eq!(te.0.ty, type_ast::Type::Nothing);
913881
}
914882

915883
#[test]
@@ -922,11 +890,7 @@ mod tests {
922890
let e = parser.parse();
923891
let mut ti = TypeInference::new();
924892
let te = ti.infer(&e).unwrap();
925-
if let type_ast::TypeAst::TypeExpr(te) = te {
926-
assert_eq!(te.ty, type_ast::Type::Nothing);
927-
} else {
928-
panic!("Unexpected decl.");
929-
}
893+
assert_eq!(te.0.ty, type_ast::Type::Nothing);
930894
}
931895

932896
#[test]
@@ -968,7 +932,7 @@ mod tests {
968932
let e = parser.parse();
969933
let mut ti = TypeInference::new();
970934
let te = ti.infer(&e).unwrap();
971-
let expected = type_ast::TypeAst::TypeExpr(type_ast::TypeExpr {
935+
let expected = type_ast::TypeAst(type_ast::TypeExpr {
972936
ty: type_ast::Type::Nothing,
973937
expr: type_ast::TypeExpr_::Let(type_ast::Let {
974938
decls: vec![type_ast::TypeDecl::Type(type_ast::TyDecl {
@@ -1005,7 +969,7 @@ mod tests {
1005969
let e = dbg!(parser.parse());
1006970
let mut ti = TypeInference::new();
1007971
let te = ti.infer(&e).unwrap();
1008-
let expected = type_ast::TypeAst::TypeExpr(type_ast::TypeExpr {
972+
let expected = type_ast::TypeAst(type_ast::TypeExpr {
1009973
ty: type_ast::Type::Int,
1010974
expr: type_ast::TypeExpr_::Let(type_ast::Let {
1011975
decls: vec![type_ast::TypeDecl::Func(type_ast::FuncDecl {

0 commit comments

Comments
 (0)