0
|
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
|