Index: src/ResolvExpr/CurrentObject.cc
===================================================================
--- src/ResolvExpr/CurrentObject.cc	(revision 918e41658251462674170087810cdc6081691d49)
+++ src/ResolvExpr/CurrentObject.cc	(revision 8d6786bfc199bb439f5dd3e59d381e5a8e28f47a)
@@ -689,5 +689,6 @@
 
 			auto arg = eval( expr );
-			index = arg.first;
+			assertf( arg.hasKnownValue, "Non-evaluable expression made it to IndexIterator" );
+			index = arg.knownValue;
 
 			// if ( auto constExpr = dynamic_cast< const ConstantExpr * >( expr ) ) {
@@ -728,8 +729,8 @@
 		size_t getSize( const Expr * expr ) {
 			auto res = eval( expr );
-			if ( !res.second ) {
+			if ( !res.hasKnownValue ) {
 				SemanticError( location, toString( "Array designator must be a constant expression: ", expr ) );
 			}
-			return res.first;
+			return res.knownValue;
 		}
 
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 918e41658251462674170087810cdc6081691d49)
+++ src/ResolvExpr/Resolver.cc	(revision 8d6786bfc199bb439f5dd3e59d381e5a8e28f47a)
@@ -1341,10 +1341,10 @@
 					auto mutAttr = mutate(attr);
 					mutAttr->params.front() = resolved;
-					if (! result.second) {
+					if (! result.hasKnownValue) {
 						SemanticWarning(loc, Warning::GccAttributes,
 							toCString( name, " priorities must be integers from 0 to 65535 inclusive: ", arg ) );
 					}
 					else {
-						auto priority = result.first;
+						auto priority = result.knownValue;
 						if (priority < 101) {
 							SemanticWarning(loc, Warning::GccAttributes,
