Orange check failling all of a sudden

DigitalDesigns DigitalDesigns at gmail.com
Mon Jun 11 18:00:17 UTC 2018


Changed some things in my app but unrelated to serialization and 
now my app fails when trying to read the xml that was generated 
at the output of the previous run.

Where it is failing is here:

     void checkSpace(ref string s) @safe pure // rule 3
     {
         import std.algorithm.searching : countUntil;
         import std.ascii : isWhite;
         import std.utf : byCodeUnit;

         mixin Check!("Whitespace");
         ptrdiff_t i = s.byCodeUnit.countUntil!(a => !isWhite(a));
         if (i == -1 && s.length > 0 && isWhite(s[0]))
             s = s[$ .. $];
         else if (i > -1)
             s = s[i .. $];
         if (s is old) fail();
     }

s =
="1.0" encoding="UTF-8"?>
<archive version="1.0.0" type="org.dsource.orange.xml">
     <data>

Actual xml data(first 3 lines):

<?xml version="1.0" encoding="UTF-8"?>
<archive version="1.0.0" type="org.dsource.orange.xml">
     <data>


It seems odd that it should fail when munching whitespace. It 
seems that the checker is getting off to a bad start from the get 
go.



-		[orange.xml.PhobosXml.CheckException]	0x03135880 
{err=0x00000000, tail="="1.0" encoding="UTF-8"?>
<archive version="1.0.0" type="org.dsource.orange.xml">
     <data>
orange.xml.PhobosXml.CheckException
+		orange.xml.PhobosXml.XMLException	0x03135880 
{}	orange.xml.PhobosXml.XMLException
		err	0x00000000	orange.xml.PhobosXml.CheckException
+		tail	"="1.0" encoding="UTF-8"?>
<archive version="1.0.0" type="org.dsource.orange.xml">
     <data>
            ...	const(char)[]
+		msg	"Whitespace"	const(char)[]
		line	0	uint
		column	0	uint


This was all working fine before and I'm not sure how it broke. 
The xmllint shows the xml is well formed so this is buggy code.


Note that if I also remove all the xml inside data then the same 
error occurs, so this is my xml:

<?xml version="1.0" encoding="UTF-8"?>
<archive version="1.0.0" type="org.dsource.orange.xml">
     <data>
     </data>
</archive>

that still fails when checking whitespace.


More information about the Digitalmars-d-learn mailing list