namespace Fortran::FIR {
namespace {
-Expression *ExprRef(const parser::Expr &a) { return a.typedExpr.get(); }
+Expression *ExprRef(const parser::Expr &a) { return a.typedExpr.get()->v; }
Expression *ExprRef(const common::Indirection<parser::Expr> &a) {
- return a.value().typedExpr.get();
+ return a.value().typedExpr.get()->v;
}
struct LinearOp;
using FunctionType = evaluate::SomeType; // TODO: what should this be?
using AttributeList = std::vector<Attribute>;
enum struct LinkageTypes { Public, Hidden, External };
-using Expression = evaluate::GenericExprWrapper;
+using Expression = evaluate::Expr<evaluate::SomeType>;
using Variable = const semantics::Symbol *;
using PathVariable = const parser::Variable;
using Scope = const semantics::Scope;
static std::string dump(const Expression &e) {
std::stringstream stringStream;
- e.v.AsFortran(stringStream);
+ e.AsFortran(stringStream);
return stringStream.str();
}