[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/kalgebra/analitza
From:       Aleix Pol Gonzalez <aleixpol () gmail ! com>
Date:       2010-12-08 0:14:03
Message-ID: 20101208001403.8FC48AC8A5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1204560 by apol:

Make type check test to pass again. KAlgebra loves green results!


 M  +11 -5     expressiontypechecker.cpp  
 M  +2 -1      tests/typechecktest.cpp  


--- trunk/KDE/kdeedu/kalgebra/analitza/expressiontypechecker.cpp #1204559:1204560
@@ -414,11 +414,19 @@
 		Object* ul=c->ulimit();
 		ExpressionType tt;
 		if(ul) {
+			Object* dl=c->dlimit();
 			ul->visit(this);
 			
 			tt=current; //FIXME: should remove when done
+			if(!current.isError() && current.type()!=ExpressionType::Any)
+				assumptions=typeIs(dl, ExpressionType(current));
+			else {
+				dl->visit(this);
+				tt=current;
+				
 			if(!current.isError())
-				assumptions=typeIs(c->dlimit(), ExpressionType(current));
+					assumptions=typeIs(ul, ExpressionType(current));
+			}
 		} else if(c->domain()) {
 			c->domain()->visit(this);
 			
@@ -448,7 +456,7 @@
 		case Operator::sum:
 		case Operator::product:
 			(*c->firstValue())->visit(this);
-			
+			current.addAssumptions(assumptions);
 			break;
 		case Operator::diff:
 			//TODO Check inside
@@ -489,9 +497,8 @@
 				if(c->m_params.first()->type()==Object::variable) {
 					QString name=static_cast<Ci*>(c->m_params.first())->name();
 					assumptions.insert(name, func);
-					
+				}
 					ret.addAssumptions(assumptions);
-				}
 				
 				current=ret;
 			} else {
@@ -636,7 +643,6 @@
 						
 						foreach(const ExpressionType& param, option.parameters()) {
 							QList<ExpressionType> types=param.type()==ExpressionType::Many ? \
                param.alternatives() : QList<ExpressionType>() << param;
-							
 							QList<ExpressionType> options;
 							foreach(const ExpressionType& t, types) {
 								foreach(const ExpressionType& alt, alts) {
--- trunk/KDE/kdeedu/kalgebra/analitza/tests/typechecktest.cpp #1204559:1204560
@@ -115,7 +115,8 @@
 	QTest::newRow("eq") << "x->eq(1,x)" << "num -> num";
 	QTest::newRow("list@sum") << "v->sum(i**2 : i@v)" << "([num] -> num) | (<num,-1> -> \
num)";  
-	QTest::newRow("bounded sum") << "n->sum(x : x=n..0)" << "num -> num";
+	QTest::newRow("bounded sum_up") << "n->sum(x : x=n..0)" << "num -> num";
+	QTest::newRow("bounded sum_down") << "n->sum(x : x=0..n)" << "num -> num";
 	
 	QTest::newRow("unknown") << "w" << "*";
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic