EquelleType type() const { EquelleType t = SymbolTable::getFunction(funcname_).returnType(funcargs_->argumentTypes()); if (dsr_ != NotApplicable) { assert(t.isEntityCollection()); return EquelleType(t.basicType(), Collection, dsr_, t.subsetOf(), t.isMutable(), t.isDomain()); } else { return t; } }
EquelleType type() const { // We do not want mutability of a variable to be passed on to // expressions involving that variable. EquelleType et = SymbolTable::variableType(varname_); if (et.isMutable()) { et.setMutable(false); } return et; }
EquelleType type() const { // We do not want mutability of a variable to be passed on to // expressions involving that variable. if (SymbolTable::isVariableDeclared(varname_)) { EquelleType et = SymbolTable::variableType(varname_); if (et.isMutable()) { et.setMutable(false); } return et; } else if (SymbolTable::isFunctionDeclared(varname_)) { // Function reference. return EquelleType(); } else { throw std::logic_error("Internal compiler error in VarNode::type()."); } }