You've already forked lazarus-ccr
Fix empty complexType parsing
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@552 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -10,6 +10,8 @@
|
||||
<types>
|
||||
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:wst-test">
|
||||
|
||||
<xsd:complexType name="TEmptyHeader" wst:wst_headerBlock="true" />
|
||||
|
||||
<xsd:complexType name="TSampleHeader" wst:wst_headerBlock="true">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="intField" type="xsd:int"/>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<schema xmlns:tns="class_headerblock_derived" xmlns:wst="urn:wst_base" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="class_headerblock_derived">
|
||||
|
||||
<xsd:complexType name="TEmptyHeader" wst:wst_headerBlock="true" />
|
||||
|
||||
<xsd:complexType name="TSampleHeader" wst:wst_headerBlock="true">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="intField" type="xsd:int"/>
|
||||
|
@ -300,6 +300,13 @@ begin
|
||||
mdl := TPasModule(tr.CreateElement(TPasModule,'class_headerblock_derived',tr.Package,visDefault,'',0));
|
||||
tr.Package.Modules.Add(mdl);
|
||||
mdl.InterfaceSection := TPasSection(tr.CreateElement(TPasSection,'',mdl,visDefault,'',0));
|
||||
cltyp := TPasClassType(tr.CreateElement(TPasClassType,'TEmptyHeader',mdl.InterfaceSection,visDefault,'',0));
|
||||
cltyp.ObjKind := okClass;
|
||||
cltyp.AncestorType := tr.FindElementNS('THeaderBlock',s_xs) as TPasType;
|
||||
cltyp.AncestorType.AddRef();
|
||||
mdl.InterfaceSection.Declarations.Add(cltyp);
|
||||
mdl.InterfaceSection.Types.Add(cltyp);
|
||||
|
||||
cltyp := TPasClassType(tr.CreateElement(TPasClassType,'TSampleHeader',mdl.InterfaceSection,visDefault,'',0));
|
||||
cltyp.ObjKind := okClass;
|
||||
cltyp.AncestorType := tr.FindElementNS('THeaderBlock',s_xs) as TPasType;
|
||||
|
@ -1172,7 +1172,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TTest_CustomXsdParser.class_headerblock_derived();
|
||||
const s_class_name = 'TSampleHeader';
|
||||
const s_class_name = 'TSampleHeader'; s_emty_class_name = 'TEmptyHeader';
|
||||
var
|
||||
tr : TwstPasTreeContainer;
|
||||
mdl : TPasModule;
|
||||
@ -1183,6 +1183,14 @@ begin
|
||||
try
|
||||
mdl := tr.FindModule('class_headerblock_derived');
|
||||
CheckNotNull(mdl,'class_headerblock_derived');
|
||||
elt := tr.FindElement(s_emty_class_name);
|
||||
CheckNotNull(elt,s_emty_class_name);
|
||||
CheckEquals(s_emty_class_name,elt.Name);
|
||||
CheckEquals(s_emty_class_name,tr.GetExternalName(elt));
|
||||
CheckIs(elt,TPasClassType);
|
||||
clsType := elt as TPasClassType;
|
||||
CheckNotNull(clsType.AncestorType,'AncestorType is null');
|
||||
CheckSame(tr.FindElementNS('THeaderBlock',sXSD_NS),clsType.AncestorType);
|
||||
elt := tr.FindElement(s_class_name);
|
||||
CheckNotNull(elt,s_class_name);
|
||||
CheckEquals(s_class_name,elt.Name);
|
||||
@ -1191,6 +1199,7 @@ begin
|
||||
clsType := elt as TPasClassType;
|
||||
CheckNotNull(clsType.AncestorType,'AncestorType is null');
|
||||
CheckSame(tr.FindElementNS('THeaderBlock',sXSD_NS),clsType.AncestorType);
|
||||
|
||||
finally
|
||||
tr.Free();
|
||||
end;
|
||||
|
Reference in New Issue
Block a user