[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