|
1 Various issues/ideas |
|
2 -------------------- |
|
3 |
|
4 Regressions due to erratas: |
|
5 |
|
6 K2-ComputeConAttr-42 |
|
7 K2-ComputeConAttr-43 |
|
8 K2-CopyNamespacesProlog-9 |
|
9 combiningnodeseqexcepthc5 |
|
10 |
|
11 Public API: |
|
12 - Have overloads for attribute() etc which take StringRefs? |
|
13 - 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. |
|
14 - Check properties in the static & dynamic context, that they actually propagate through(and with changes). For instance, static base URI. |
|
15 - Change StandardPrefixes/etc to be namespaces instead of classes. |
|
16 - Test that prefixes doesn't affect name lookups. |
|
17 - You need to decide on how `patternist' should treat non-wellformedness. |
|
18 - Changefrom QList to QVector. Maybe add a toFooVector() to QAbstractForwardIterator, so we can use a custom vector class in the future. |
|
19 |
|
20 - Tons of tests are missing for serialization. Go through all the error codes, ERE0003 for instance. |
|
21 - Trigger toList in DeduplicateIterator. |
|
22 |
|
23 - 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() |
|
24 - Preceding/following axis selects always nothing from a root node. |
|
25 - No tests for ordering empty sequence when the decl. is not global. Also several sort keys. |
|
26 - Check PlainSharedPtr for thread safety. Switch to Qt's one. |
|
27 - Add weird scheme for doc-available/doc(). ftp, ssh, unknown scheme. |
|
28 - Forward/Reverse iterators on top level nodes with "siblings". |
|
29 - Let UserFunctionCallsite return DisableTypingDeduction instead of doing hackery in ExpressionSequence. |
|
30 - Add exceptions support explicitly to the pro files. |
|
31 - Maybe we can merge ArgumenentReference and ExpressionVariableReference? |
|
32 - ArgumenentReference does not implement evaluateToSequenceReceiver() |
|
33 - Let VariableReference store the whole VariableDeclaration instead |
|
34 - EvaluationCache.cpp:189: return m_operand->properties() & (DisableElimination | IsEvaluated | DisableTypingDeduction); should probably use |
|
35 deepProperties(), no? Try to trigger it and fix it. |
|
36 - It turns out VariableDeclaration::ExternalVariable was actually needed. Currently we use an ExpressionReference to an External reference which is a double layer. |
|
37 - It seems that for each Literal, a new Literal is created in Expression::constantPropagate. |
|
38 - Trigger bug: newMe should be returned, not Expression::Ptr(this) in AndExpression. |
|
39 - Trigger all the paths in Expression::constantPropagate() for error reporting. |
|
40 - Type inference in K2-Axes-2 doesn't work very well. ItemVerifiers are inserted. |
|
41 - Write test of the public API that the static/dynamic context in one query compilation doesn't affect in another one. |
|
42 - Maybe "$foo, $foo" can be handled with a content receiver that doubles events, somehow? |
|
43 - If you use weird EOLs in namespace bindings in direct attrs, one get bugs, because attributeAsRaw() doesn't do EOL normalization. |
|
44 - Aren't we doing too aggressive caching in UserFunctionCallsite::setSource()? |
|
45 - 4763 |
|
46 - We wrap the context item with an evaluation cache, because it's considered creative, probably. But is the cache really necessary? Huge slowdown.. |
|
47 - If a type is declared as exactly one for an external variable, evaluateSequence() gets called anyway. A problem? |
|
48 - 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. |
|
49 - Write test, xmlns.xml, for checking basic namespace handling. xmlns.xml contained: |
|
50 <?xml version="1.0" encoding="UTF-8"?> |
|
51 <anElement xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:space="preserve"/> |
|
52 - Pass SourceLocationReflection to Boolean::evaluateEBV() |
|
53 - Factor out the C++ code in createReportContext.xsl into a template |
|
54 - I'm afraid that setting/using the type of the context item is not thoroughly tested; LetClause. |
|
55 - Preallocate like a maniac in AccelTree |
|
56 - Write tests for 4621 |
|
57 - In return tokenAndChangeState(t->token... is it really safe to deref t? Write tests.. |
|
58 - Use all weird numeric literals chars in char refs and num literals to get rid of locale dependent parsing. |
|
59 - 1. Grep sources for trimmed(), simplified(), isSpace(), as well as home written versions(typeswitches over chars) |
|
60 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. |
|
61 3. Write tests triggering all current cases |
|
62 4. Make the tests pass |
|
63 - Write function decl that use all types(for parsing) |
|
64 - trigger if(m_pos == m_length) |
|
65 return END_OF_FILE; in ignoreComment() |
|
66 |
|
67 - Use actual qnames("p:a") in all branches of for/let |
|
68 - Make Token's ctors explcit |
|
69 - Trigger the bugs the tokenizer have by using QChar::cell(). |
|
70 - Add http://forums.oracle.com/forums/thread.jspa?messageID=1570246& to test cases. |
|
71 - Look at the TreeModelCompleter, and steal code to Patternist View. |
|
72 - Consider/test extracting EBV from a sorted, possibly mixed sequence. |
|
73 - Move FunctionCall to expr/ |
|
74 - Can RequiresFocus and RequiresContextItem be merged? |
|
75 - Move janitors/* to expr/ |
|
76 - Check that ItemSequenceCache is tested with StackContextBase |
|
77 - It is imperative to optimize x[last()] |
|
78 - Apply fn:count() to CachingIterator. |
|
79 - Test cache for booleans. |
|
80 - Write test that use all XML 1.0 characters. |
|
81 - Fixed: 4462 4460 |
|
82 - Add test where AxisStep::evaluateSingleton() gets called with no initialized focus. |
|
83 - Attribute normalization.. <e attr=" "/> |
|
84 - Node::namespaceBindings() doesn't discuss uniqueness. |
|
85 - Move common.pri to src/.. |
|
86 - Write tests for node test source in attribute foo. |
|
87 - 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. |
|
88 - Write tests for cardinalities in let & for. |
|
89 - Write test for invalud anyURI in xmlns attr that is extr. with namespace-uri(). |
|
90 - is nameToElements in AccelTree used/needed? |
|
91 - Overflow is not captured when going from abs(unsignedLong(largeNNN)) and between all the other aggregate functions. avg() as well.. |
|
92 - Turn NamespaceResolver::Bindings into NamespaceBinding::Vector ffs. |
|
93 - Property IsNodeConstructor isn't used, right? |
|
94 - Write tests for things like function-available that depend on tricky namespace contexts. Especially the default element in the typeCheck stage(). |
|
95 - Gather all functions that stores the namespace context, and ensure they get it right with element constructors, of all its kinds. |
|
96 - Add tests for where the local name is xmlns, in attrs. |
|
97 - Implement AxisStep::evaluateEBV() |
|
98 - 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 |
|
99 of the comparator(prefix, ns, ln) to store. |
|
100 - How are axis steps without tests handled? |
|
101 - Convert the NamespaceResolver to use the NamePool |
|
102 - Write tests for deep-equal() involving different trees. Spectacular things can happen there with the AccelTree... |
|
103 - Ask Andreas on file:/, file://, file:/// |
|
104 - Secure up on brain damage in DelegateQDomNode.cpp#430. |
|
105 - Apply reverse() to all axes. |
|
106 - Dump all qHash(QUrl) functions when we have switched to Qt 4.3. |
|
107 - Rename retrieveFunctionSignature to retieveSignature() or just signature(). Same with functionSignatures(). |
|
108 - Don't use toLexical() in Serializer. It triggers unnecessary heap allocations, |
|
109 - Replace SequenceReceiver::processingInstruction(QName) with QName::LocalNameCode. |
|
110 - Delete DoubledNodeTest |
|
111 - Replace allocateQName(QString() with StandardNamespaces::empty |
|
112 - TODO http://www.pms.ifi.lmu.de/forschung/xpath-eval.html |
|
113 - Write tests that test whitespace normalization in URI/namespace declarations. |
|
114 - Tests: use namespace-uri-for-prefix with prefix "xml" and supply a node( can const fold) |
|
115 - Add tests to resolve-uri() for invalid xs:anyURI values |
|
116 - Make sure that xml:base affects the static context. Or? |
|
117 - We need a systematic way to convert QUrl to xs:string instances. Same goes for static inline String::Ptr fromValue(const QUrl &value) |
|
118 - QUrl can't handle empty strings: |
|
119 K-CondExpr-9 |
|
120 K-LogicExpr-10 |
|
121 K-LogicExpr-11 |
|
122 K-LogicExpr-35 |
|
123 K-LogicExpr-36 |
|
124 K-NodeNamespaceURIFunc-3 |
|
125 K-NotFunc-8 |
|
126 K-SeqBooleanFunc-8 |
|
127 K-SeqExprCast-1373 |
|
128 K-WhereExpr-11 |
|
129 |
|
130 - It's very important that the auto tests for the public API tests different features: |
|
131 - fn:trace() |
|
132 - external variables |
|
133 - node constructors |
|
134 - that node building happens, as opposed to just node events |
|
135 - warnings/errors |
|
136 - file loading: fn:doc() |
|
137 - fn:collection() |
|
138 - serialization error |
|
139 |
|
140 - Should SeqReceiver::attribute() really be passed a QString? Shouldn't it be an Item::Ptr since |
|
141 it may be typed? Or should we use overloads somehow? |
|
142 - base-URI-8 has an interesting problem with evaluation mode..? No idea what it is. |
|
143 - base-URI-24: we should be normalizing, not trimming whitespace. |
|
144 - xs:anyURI("http://www.example.org/%20%20examples") should output the percentage signs. base-uri-25 |
|
145 - base-URI-21, base-URI-15 because QUrl transform htpp://A to a. |
|
146 - fn-nilled-2 regressed for unknown reason, probably related to paths. |
|
147 - TODO How are we to handle empty string URIs? |
|
148 - Write one test for each time URILiteral is used in the grammar, and pass in an invalid URI. XQST0046. |
|
149 - Someone creates a StackContextBase at compile time, gr.. |
|
150 - Follow up on the "Computed attributes: 'xmlns' with non-empty namespace" topic. |
|
151 - Write tests for root() while using the context item. |
|
152 - UserFunctionCallsite::staticType() is quite broken, and needs thinking, followed by writing test cases to triggers |
|
153 its faults. |
|
154 - Write tests for: |
|
155 "certain characters MUST be output as character references, to ensure that |
|
156 they survive the round trip through serialization and parsing. Specifically, |
|
157 CR, NEL and LINE SEPARATOR characters in text nodes MUST be output |
|
158 respectively as "
", "…", and "
", or their equivalents;". |
|
159 - Write test for XQST0093 |
|
160 - Write tests for where NameChar is used. |
|
161 - Optimize (a = b) where a and b are of type xs:string of any length, by putting the values into QMaps? |
|
162 - Perhaps add tests that ensure locale-specific integer parsing isn't used? Read QChar::isDigit() to find out. |
|
163 - Add assert in DerivedInteger |
|
164 - It looks like the type is incorrectly inferred for min/max(), see Aggregator.*. |
|
165 * Add tests that trigger this |
|
166 * http://sourceforge.net/tracker/index.php?func=detail&aid=1552670&group_id=29872&atid=397617 |
|
167 - Regression in the function refactoring: The Function Signatures View only show |
|
168 the constructor functions, the F&O stuff doesn't show up. The reason for this is that with the |
|
169 recent refactoring the ability to retrieve all signatures was lost. A signature is first inserted |
|
170 into m_signatures when a matching function call has been asked for. The regression in Patternist View is not |
|
171 very important but if we want to do things like displaying signatures that "almost" match etc, we will need to |
|
172 get back the "give me all signatures in a list"-feature. We need to regression test this: |
|
173 Q_VERIFY(FunctionFactoryCollection::xpath20Factory().signatures().count(), N); |
|
174 - Would it be an optimization to apply the cardinality verifier before the untyped atomic converter? |
|
175 - Document in Mainpage.h to not use capturing paranteses, and review existing code. |
|
176 - Find invalid use of ElementName in .ypp and write tests |
|
177 - Rewrite SubsequenceFN::staticType/compress(). It's really weird. Take advantage |
|
178 of the new Cardinality class. |
|
179 - Get rid of AtomicValue::hasError() in favor of returning null.. |
|
180 - ResourceLoader::announceDocument() should return an ItemType? |
|
181 - ResourceLoader::announceUnparsedText() should return false/true? E.g, always be a string? Nope, bad idea.. |
|
182 - rename xdtTypeMatches to isOfType() -- much cleaner. Finally found a good name for that |
|
183 function. Stolen from XQJ. Or perhaps also isInstanceOf().. |
|
184 - Optimize Decimal/AbstractFloat::stringValue() by using QByteArray and QByteArray::fromRawData(). |
|
185 - TODO ComparisonPlatform: |
|
186 * prepareComparison is pretty pointless. My idea is that it should do all the operator lookup. For |
|
187 example, CastingPlatform::prepareCasting() actually do something and provide convenience. |
|
188 |
|
189 - Actually make ParentNodeAxis::create() do what it says(return singleton) |
|
190 - Think about base URI for Node |
|
191 - Fix doxygen @file warnings, pending: http://bugzilla.gnome.org/show_bug.cgi?id=345481 |
|
192 - 'case 0:' in XQueryTokenizer.cpp will break |
|
193 - TruthPredicate::map() is never called because of regression in the Iterator refactoring. |
|
194 GenericPredicate's members are called instead. This is a performance regression. |
|
195 - Perhaps provide suitable default implementation of expectedOperandTypes in *Container classes? |
|
196 - Make And/OrExpression a template class. |
|
197 - Reduce UserFunctionCallsite object size by storing arity&name as a FunctionSignature that |
|
198 is replaced by the real one. |
|
199 - Perhaps one of the error codes in QNameConstructor::expandQName can be used(the same in each case.) |
|
200 - Move FunctionCall to expr/ |
|
201 - The scanner has problem with Unicode characters. Have a look at the tests |
|
202 in functions-assemblestring.xml. |
|
203 - When converting to KDOM's WebCore names, also camel case the CommonSequenceTypes::* names. |
|
204 - For namespace nodes implementation, see: http://lists.w3.org/Archives/Public/www-ql/2003OctDec/0001.html |
|
205 - XPathExpression::evaluate() is supposed to return a |
|
206 DOMObject, but currently returns an XPathResult. |
|
207 - String/Float conversion: |
|
208 - 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(). |
|
209 - data/AnyURI, the implementation of xs:anyURI, is halfy complete, and needs attention. Error |
|
210 handling with casting needs a look as well. |
|
211 - Investigate nilled PSVI |
|
212 |
|
213 |
|
214 KXQTS |
|
215 -------------------- |
|
216 * Rename TestSuite::testResult(); it's not exactly a getter |
|
217 * Grr, rename identifiers and files from *BaseLine* into *Baseline*. |
|
218 * Speed up --run-outofprocess by keeping patternistrunsuite running as long as possible. |
|
219 * Make text fields in test case view, selectable. Same with AST view. |
|
220 |
|
221 - Code cleaning commands: |
|
222 * Find cases where stuff looks like "const Foo& var" instead of "const Foo &var": |
|
223 `grep -nHR "\& .*,"` * |
|
224 * Convert modeline: |
|
225 sed -i -e 's+// vim:ts=4:noet+// vim: et:ts=4:sw=4:sts=4+g' `find -name "*.cpp" -or -name "*.h"` |
|
226 * Bump copyright year: |
|
227 sed -i -e 's/2005/2006/g' `find -name "*.h" -or -name "*.cpp"` |
|
228 |
|
229 grep "if ([[:space:]]*[[:alnum:]]*[[:space:]]*=[[:space:]]*[[:alnum:]]" |
|
230 * Find and remove whitespace after lines: |
|
231 sed -i -e 's/[ \t]\+$//' `find -name "*.cpp" -or -name "*.h" -or -name "*.ypp" -or -name "*.pri" -or -name "*.pro"` |
|
232 |
|
233 - The new suite runner should: |
|
234 - Be completely in process |
|
235 - QTestLib based |
|
236 - Baseline the final AST |
|
237 - Baseline messages |
|
238 - Be stream based |
|
239 - Consider to what degree it should replace all the old code in sdk/lib. There's so much old, obsolete code. |
|
240 |
|
241 // vim: et:ts=4:sw=4:sts=4 |