Various issues/ideas+ −
--------------------+ −
+ −
Regressions due to erratas:+ −
+ −
K2-ComputeConAttr-42+ −
K2-ComputeConAttr-43+ −
K2-CopyNamespacesProlog-9+ −
combiningnodeseqexcepthc5+ −
+ −
Public API:+ −
- Have overloads for attribute() etc which take StringRefs?+ −
- Test reusing the context and change bindings each time. Rebind the predefined namespace bindings fn, xs, xml, and use them again in a subsequent query.+ −
- Check properties in the static & dynamic context, that they actually propagate through(and with changes). For instance, static base URI.+ −
- Change StandardPrefixes/etc to be namespaces instead of classes.+ −
- Test that prefixes doesn't affect name lookups.+ −
- You need to decide on how `patternist' should treat non-wellformedness.+ −
- Changefrom QList to QVector. Maybe add a toFooVector() to QAbstractForwardIterator, so we can use a custom vector class in the future.+ −
+ −
- Tons of tests are missing for serialization. Go through all the error codes, ERE0003 for instance.+ −
- Trigger toList in DeduplicateIterator.+ −
+ −
- Rewrite/test descendant-or-sel::node-type() (etc) from a node which isn't the node type. This can be rewritten to descendant::node-type()+ −
- Preceding/following axis selects always nothing from a root node.+ −
- No tests for ordering empty sequence when the decl. is not global. Also several sort keys.+ −
- Check PlainSharedPtr for thread safety. Switch to Qt's one.+ −
- Add weird scheme for doc-available/doc(). ftp, ssh, unknown scheme.+ −
- Forward/Reverse iterators on top level nodes with "siblings".+ −
- Let UserFunctionCallsite return DisableTypingDeduction instead of doing hackery in ExpressionSequence.+ −
- Add exceptions support explicitly to the pro files.+ −
- Maybe we can merge ArgumenentReference and ExpressionVariableReference?+ −
- ArgumenentReference does not implement evaluateToSequenceReceiver()+ −
- Let VariableReference store the whole VariableDeclaration instead+ −
- EvaluationCache.cpp:189: return m_operand->properties() & (DisableElimination | IsEvaluated | DisableTypingDeduction); should probably use+ −
deepProperties(), no? Try to trigger it and fix it.+ −
- It turns out VariableDeclaration::ExternalVariable was actually needed. Currently we use an ExpressionReference to an External reference which is a double layer.+ −
- It seems that for each Literal, a new Literal is created in Expression::constantPropagate.+ −
- Trigger bug: newMe should be returned, not Expression::Ptr(this) in AndExpression.+ −
- Trigger all the paths in Expression::constantPropagate() for error reporting.+ −
- Type inference in K2-Axes-2 doesn't work very well. ItemVerifiers are inserted.+ −
- Write test of the public API that the static/dynamic context in one query compilation doesn't affect in another one.+ −
- Maybe "$foo, $foo" can be handled with a content receiver that doubles events, somehow?+ −
- If you use weird EOLs in namespace bindings in direct attrs, one get bugs, because attributeAsRaw() doesn't do EOL normalization.+ −
- Aren't we doing too aggressive caching in UserFunctionCallsite::setSource()?+ −
- 4763+ −
- We wrap the context item with an evaluation cache, because it's considered creative, probably. But is the cache really necessary? Huge slowdown..+ −
- If a type is declared as exactly one for an external variable, evaluateSequence() gets called anyway. A problem?+ −
- Search for use of QString::isSpace(), write tests, and check if it really is intentioonal to check for the separartor group, as opposed the dead old ASCII whitespace characters. fn:normalize-space() and fn:normalize-unicode() are characters.+ −
- Write test, xmlns.xml, for checking basic namespace handling. xmlns.xml contained:+ −
<?xml version="1.0" encoding="UTF-8"?>+ −
<anElement xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:space="preserve"/>+ −
- Pass SourceLocationReflection to Boolean::evaluateEBV()+ −
- Factor out the C++ code in createReportContext.xsl into a template+ −
- I'm afraid that setting/using the type of the context item is not thoroughly tested; LetClause.+ −
- Preallocate like a maniac in AccelTree+ −
- Write tests for 4621+ −
- In return tokenAndChangeState(t->token... is it really safe to deref t? Write tests..+ −
- Use all weird numeric literals chars in char refs and num literals to get rid of locale dependent parsing.+ −
- 1. Grep sources for trimmed(), simplified(), isSpace(), as well as home written versions(typeswitches over chars)+ −
2. Find out what the spec says regarding weird Unicode whitespace. For instance, hair space, U+200A (8202 decimal), THIN SPACE. Non breaking space is another case.+ −
3. Write tests triggering all current cases+ −
4. Make the tests pass+ −
- Write function decl that use all types(for parsing)+ −
- trigger if(m_pos == m_length)+ −
return END_OF_FILE; in ignoreComment()+ −
+ −
- Use actual qnames("p:a") in all branches of for/let+ −
- Make Token's ctors explcit+ −
- Trigger the bugs the tokenizer have by using QChar::cell().+ −
- Add http://forums.oracle.com/forums/thread.jspa?messageID=1570246& to test cases.+ −
- Look at the TreeModelCompleter, and steal code to Patternist View.+ −
- Consider/test extracting EBV from a sorted, possibly mixed sequence.+ −
- Move FunctionCall to expr/+ −
- Can RequiresFocus and RequiresContextItem be merged?+ −
- Move janitors/* to expr/+ −
- Check that ItemSequenceCache is tested with StackContextBase+ −
- It is imperative to optimize x[last()]+ −
- Apply fn:count() to CachingIterator.+ −
- Test cache for booleans.+ −
- Write test that use all XML 1.0 characters.+ −
- Fixed: 4462 4460+ −
- Add test where AxisStep::evaluateSingleton() gets called with no initialized focus.+ −
- Attribute normalization.. <e attr=" "/>+ −
- Node::namespaceBindings() doesn't discuss uniqueness.+ −
- Move common.pri to src/..+ −
- Write tests for node test source in attribute foo.+ −
- Isn't end-of-line handling applied to text nodes in direct ctors? Yupp, it does. The whole freakin' query: A.2.3 End-of-Line Handling.+ −
- Write tests for cardinalities in let & for.+ −
- Write test for invalud anyURI in xmlns attr that is extr. with namespace-uri().+ −
- is nameToElements in AccelTree used/needed?+ −
- Overflow is not captured when going from abs(unsignedLong(largeNNN)) and between all the other aggregate functions. avg() as well..+ −
- Turn NamespaceResolver::Bindings into NamespaceBinding::Vector ffs.+ −
- Property IsNodeConstructor isn't used, right?+ −
- Write tests for things like function-available that depend on tricky namespace contexts. Especially the default element in the typeCheck stage().+ −
- Gather all functions that stores the namespace context, and ensure they get it right with element constructors, of all its kinds.+ −
- Add tests for where the local name is xmlns, in attrs.+ −
- Implement AxisStep::evaluateEBV()+ −
- One can reduce the three type/*NameTest classes to one probably, by passing in two template parameters: a mask(prefix, ns, zero), and the type+ −
of the comparator(prefix, ns, ln) to store.+ −
- How are axis steps without tests handled?+ −
- Convert the NamespaceResolver to use the NamePool+ −
- Write tests for deep-equal() involving different trees. Spectacular things can happen there with the AccelTree...+ −
- Ask Andreas on file:/, file://, file:///+ −
- Secure up on brain damage in DelegateQDomNode.cpp#430.+ −
- Apply reverse() to all axes.+ −
- Dump all qHash(QUrl) functions when we have switched to Qt 4.3.+ −
- Rename retrieveFunctionSignature to retieveSignature() or just signature(). Same with functionSignatures().+ −
- Don't use toLexical() in Serializer. It triggers unnecessary heap allocations,+ −
- Replace SequenceReceiver::processingInstruction(QName) with QName::LocalNameCode.+ −
- Delete DoubledNodeTest+ −
- Replace allocateQName(QString() with StandardNamespaces::empty+ −
- TODO http://www.pms.ifi.lmu.de/forschung/xpath-eval.html+ −
- Write tests that test whitespace normalization in URI/namespace declarations.+ −
- Tests: use namespace-uri-for-prefix with prefix "xml" and supply a node( can const fold)+ −
- Add tests to resolve-uri() for invalid xs:anyURI values+ −
- Make sure that xml:base affects the static context. Or?+ −
- We need a systematic way to convert QUrl to xs:string instances. Same goes for static inline String::Ptr fromValue(const QUrl &value)+ −
- QUrl can't handle empty strings:+ −
K-CondExpr-9+ −
K-LogicExpr-10+ −
K-LogicExpr-11+ −
K-LogicExpr-35+ −
K-LogicExpr-36+ −
K-NodeNamespaceURIFunc-3+ −
K-NotFunc-8+ −
K-SeqBooleanFunc-8+ −
K-SeqExprCast-1373+ −
K-WhereExpr-11+ −
+ −
- It's very important that the auto tests for the public API tests different features:+ −
- fn:trace()+ −
- external variables+ −
- node constructors+ −
- that node building happens, as opposed to just node events+ −
- warnings/errors+ −
- file loading: fn:doc()+ −
- fn:collection()+ −
- serialization error+ −
+ −
- Should SeqReceiver::attribute() really be passed a QString? Shouldn't it be an Item::Ptr since+ −
it may be typed? Or should we use overloads somehow?+ −
- base-URI-8 has an interesting problem with evaluation mode..? No idea what it is.+ −
- base-URI-24: we should be normalizing, not trimming whitespace.+ −
- xs:anyURI("http://www.example.org/%20%20examples") should output the percentage signs. base-uri-25+ −
- base-URI-21, base-URI-15 because QUrl transform htpp://A to a.+ −
- fn-nilled-2 regressed for unknown reason, probably related to paths.+ −
- TODO How are we to handle empty string URIs?+ −
- Write one test for each time URILiteral is used in the grammar, and pass in an invalid URI. XQST0046.+ −
- Someone creates a StackContextBase at compile time, gr..+ −
- Follow up on the "Computed attributes: 'xmlns' with non-empty namespace" topic.+ −
- Write tests for root() while using the context item.+ −
- UserFunctionCallsite::staticType() is quite broken, and needs thinking, followed by writing test cases to triggers+ −
its faults.+ −
- Write tests for:+ −
"certain characters MUST be output as character references, to ensure that+ −
they survive the round trip through serialization and parsing. Specifically,+ −
CR, NEL and LINE SEPARATOR characters in text nodes MUST be output+ −
respectively as "
", "…", and "
", or their equivalents;".+ −
- Write test for XQST0093+ −
- Write tests for where NameChar is used.+ −
- Optimize (a = b) where a and b are of type xs:string of any length, by putting the values into QMaps?+ −
- Perhaps add tests that ensure locale-specific integer parsing isn't used? Read QChar::isDigit() to find out.+ −
- Add assert in DerivedInteger+ −
- It looks like the type is incorrectly inferred for min/max(), see Aggregator.*.+ −
* Add tests that trigger this+ −
* http://sourceforge.net/tracker/index.php?func=detail&aid=1552670&group_id=29872&atid=397617+ −
- Regression in the function refactoring: The Function Signatures View only show+ −
the constructor functions, the F&O stuff doesn't show up. The reason for this is that with the+ −
recent refactoring the ability to retrieve all signatures was lost. A signature is first inserted+ −
into m_signatures when a matching function call has been asked for. The regression in Patternist View is not+ −
very important but if we want to do things like displaying signatures that "almost" match etc, we will need to+ −
get back the "give me all signatures in a list"-feature. We need to regression test this:+ −
Q_VERIFY(FunctionFactoryCollection::xpath20Factory().signatures().count(), N);+ −
- Would it be an optimization to apply the cardinality verifier before the untyped atomic converter?+ −
- Document in Mainpage.h to not use capturing paranteses, and review existing code.+ −
- Find invalid use of ElementName in .ypp and write tests+ −
- Rewrite SubsequenceFN::staticType/compress(). It's really weird. Take advantage+ −
of the new Cardinality class.+ −
- Get rid of AtomicValue::hasError() in favor of returning null..+ −
- ResourceLoader::announceDocument() should return an ItemType?+ −
- ResourceLoader::announceUnparsedText() should return false/true? E.g, always be a string? Nope, bad idea..+ −
- rename xdtTypeMatches to isOfType() -- much cleaner. Finally found a good name for that+ −
function. Stolen from XQJ. Or perhaps also isInstanceOf()..+ −
- Optimize Decimal/AbstractFloat::stringValue() by using QByteArray and QByteArray::fromRawData().+ −
- TODO ComparisonPlatform:+ −
* prepareComparison is pretty pointless. My idea is that it should do all the operator lookup. For+ −
example, CastingPlatform::prepareCasting() actually do something and provide convenience.+ −
+ −
- Actually make ParentNodeAxis::create() do what it says(return singleton)+ −
- Think about base URI for Node+ −
- Fix doxygen @file warnings, pending: http://bugzilla.gnome.org/show_bug.cgi?id=345481+ −
- 'case 0:' in XQueryTokenizer.cpp will break+ −
- TruthPredicate::map() is never called because of regression in the Iterator refactoring.+ −
GenericPredicate's members are called instead. This is a performance regression.+ −
- Perhaps provide suitable default implementation of expectedOperandTypes in *Container classes?+ −
- Make And/OrExpression a template class.+ −
- Reduce UserFunctionCallsite object size by storing arity&name as a FunctionSignature that+ −
is replaced by the real one.+ −
- Perhaps one of the error codes in QNameConstructor::expandQName can be used(the same in each case.)+ −
- Move FunctionCall to expr/+ −
- The scanner has problem with Unicode characters. Have a look at the tests+ −
in functions-assemblestring.xml.+ −
- When converting to KDOM's WebCore names, also camel case the CommonSequenceTypes::* names.+ −
- For namespace nodes implementation, see: http://lists.w3.org/Archives/Public/www-ql/2003OctDec/0001.html+ −
- XPathExpression::evaluate() is supposed to return a+ −
DOMObject, but currently returns an XPathResult.+ −
- String/Float conversion:+ −
- For return "Decimal::fromValue(this->toDecimal())->stringValue();" for AF.cpp: perhaps a static toString should be added to Decimal that both AbstractFloat and Decimal calls. It would avoid allocating Decimal when calling stringValue().+ −
- data/AnyURI, the implementation of xs:anyURI, is halfy complete, and needs attention. Error+ −
handling with casting needs a look as well.+ −
- Investigate nilled PSVI+ −
+ −
+ −
KXQTS+ −
--------------------+ −
* Rename TestSuite::testResult(); it's not exactly a getter+ −
* Grr, rename identifiers and files from *BaseLine* into *Baseline*.+ −
* Speed up --run-outofprocess by keeping patternistrunsuite running as long as possible.+ −
* Make text fields in test case view, selectable. Same with AST view. + −
+ −
- Code cleaning commands:+ −
* Find cases where stuff looks like "const Foo& var" instead of "const Foo &var":+ −
`grep -nHR "\& .*,"` *+ −
* Convert modeline:+ −
sed -i -e 's+// vim:ts=4:noet+// vim: et:ts=4:sw=4:sts=4+g' `find -name "*.cpp" -or -name "*.h"`+ −
* Bump copyright year:+ −
sed -i -e 's/2005/2006/g' `find -name "*.h" -or -name "*.cpp"`+ −
+ −
grep "if ([[:space:]]*[[:alnum:]]*[[:space:]]*=[[:space:]]*[[:alnum:]]"+ −
* Find and remove whitespace after lines:+ −
sed -i -e 's/[ \t]\+$//' `find -name "*.cpp" -or -name "*.h" -or -name "*.ypp" -or -name "*.pri" -or -name "*.pro"`+ −
+ −
- The new suite runner should:+ −
- Be completely in process+ −
- QTestLib based+ −
- Baseline the final AST+ −
- Baseline messages+ −
- Be stream based+ −
- Consider to what degree it should replace all the old code in sdk/lib. There's so much old, obsolete code.+ −
+ −
// vim: et:ts=4:sw=4:sts=4+ −