From 655394befa45e604620b4a9901f0d269d47df093 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 27 Apr 2018 20:50:55 +0200
Subject: [PATCH] exception throw on request of invalid variable type

---
 alib2cli/src/environment/Environment.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/alib2cli/src/environment/Environment.h b/alib2cli/src/environment/Environment.h
index 993e2bc0f9..c9200a6285 100644
--- a/alib2cli/src/environment/Environment.h
+++ b/alib2cli/src/environment/Environment.h
@@ -67,7 +67,10 @@ public:
 
 	template < class T >
 	const T & getVariable ( const std::string & name ) {
-		return std::dynamic_pointer_cast < abstraction::ValueProvider < const T & > > ( getVariableInt ( name ) )->getConstValueReference ( );
+		std::shared_ptr < abstraction::ValueProvider < const T & > > ptr = std::dynamic_pointer_cast < abstraction::ValueProvider < const T & > > ( getVariableInt ( name ) );
+		if ( ! ptr )
+			throw exception::CommonException ( "Invalid variable type. Requested: " + ext::to_string < T > ( ) + ", actual : " + getVariableInt ( name )->getRuntimeReturnType ( ) );
+		return ptr->getConstValueReference ( );
 	}
 
 	void setVariable ( std::string name, std::shared_ptr < abstraction::OperationAbstraction > value ) {
-- 
GitLab