You've already forked lazarus-ccr
Parser's "CaseSensitive" implementation fix.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1963 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -49,6 +49,7 @@ type
|
|||||||
|
|
||||||
const
|
const
|
||||||
BindingStyleNames : array[TBindingStyle] of string = ( 'Document', 'RPC', 'Unknown' );
|
BindingStyleNames : array[TBindingStyle] of string = ( 'Document', 'RPC', 'Unknown' );
|
||||||
|
NAME_KINDS_DEFAULT = [elkDeclaredName, elkName];
|
||||||
|
|
||||||
type
|
type
|
||||||
TArrayStyle = ( asScoped, asEmbeded );
|
TArrayStyle = ( asScoped, asEmbeded );
|
||||||
@@ -104,6 +105,7 @@ type
|
|||||||
FBindingList : TObjectList;
|
FBindingList : TObjectList;
|
||||||
FProperties : TPropertyHolder;
|
FProperties : TPropertyHolder;
|
||||||
FCaseSensitive : Boolean;
|
FCaseSensitive : Boolean;
|
||||||
|
FDefaultSearchNameKinds: TElementNameKinds;
|
||||||
private
|
private
|
||||||
function GetBinding(AIndex : Integer): TwstBinding;
|
function GetBinding(AIndex : Integer): TwstBinding;
|
||||||
function GetBindingCount: Integer;
|
function GetBindingCount: Integer;
|
||||||
@@ -138,8 +140,12 @@ type
|
|||||||
function FindElementInModule(
|
function FindElementInModule(
|
||||||
const AName: String;
|
const AName: String;
|
||||||
AModule: TPasModule;
|
AModule: TPasModule;
|
||||||
const ANameKinds : TElementNameKinds = [elkDeclaredName, elkName]
|
const ANameKinds : TElementNameKinds
|
||||||
): TPasElement;
|
): TPasElement; overload;
|
||||||
|
function FindElementInModule(
|
||||||
|
const AName: String;
|
||||||
|
AModule: TPasModule
|
||||||
|
): TPasElement; overload;
|
||||||
function FindModule(const AName: String): TPasModule;override;
|
function FindModule(const AName: String): TPasModule;override;
|
||||||
function IsEnumItemNameUsed(const AName : string; AModule : TPasModule) : Boolean;overload;
|
function IsEnumItemNameUsed(const AName : string; AModule : TPasModule) : Boolean;overload;
|
||||||
function IsEnumItemNameUsed(const AName : string) : Boolean;overload;
|
function IsEnumItemNameUsed(const AName : string) : Boolean;overload;
|
||||||
@@ -168,6 +174,10 @@ type
|
|||||||
function IsOfType(AType: TPasType; AClass: TClass): Boolean;
|
function IsOfType(AType: TPasType; AClass: TClass): Boolean;
|
||||||
|
|
||||||
property CaseSensitive : Boolean read FCaseSensitive write FCaseSensitive default CASE_SENSITIVE_DEFAULT;
|
property CaseSensitive : Boolean read FCaseSensitive write FCaseSensitive default CASE_SENSITIVE_DEFAULT;
|
||||||
|
property DefaultSearchNameKinds : TElementNameKinds
|
||||||
|
read FDefaultSearchNameKinds
|
||||||
|
write FDefaultSearchNameKinds
|
||||||
|
default NAME_KINDS_DEFAULT;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TPasNativeModule = class(TPasModule)
|
TPasNativeModule = class(TPasModule)
|
||||||
@@ -418,68 +428,75 @@ function CreateWstInterfaceSymbolTable(AContainer : TwstPasTreeContainer) : TPas
|
|||||||
|
|
||||||
var
|
var
|
||||||
loc_TBaseComplexSimpleContentRemotable : TPasClassType;
|
loc_TBaseComplexSimpleContentRemotable : TPasClassType;
|
||||||
|
locOldNameKinds : TElementNameKinds;
|
||||||
begin
|
begin
|
||||||
Result := TPasNativeModule(AContainer.CreateElement(TPasNativeModule,'base_service_intf',AContainer.Package,visPublic,'',0));
|
locOldNameKinds := AContainer.DefaultSearchNameKinds;
|
||||||
|
AContainer.DefaultSearchNameKinds := [elkDeclaredName,elkName];
|
||||||
try
|
try
|
||||||
AContainer.Package.Modules.Add(Result);
|
Result := TPasNativeModule(AContainer.CreateElement(TPasNativeModule,'base_service_intf',AContainer.Package,visPublic,'',0));
|
||||||
AContainer.RegisterExternalAlias(Result,sXSD_NS);
|
try
|
||||||
Result.InterfaceSection := TInterfaceSection(AContainer.CreateElement(TInterfaceSection,'',Result,visDefault,'',0));
|
AContainer.Package.Modules.Add(Result);
|
||||||
AddSystemSymbol(Result,AContainer);
|
AContainer.RegisterExternalAlias(Result,sXSD_NS);
|
||||||
AddClassDef(Result,'TBaseRemotable','',TPasNativeClassType);
|
Result.InterfaceSection := TInterfaceSection(AContainer.CreateElement(TInterfaceSection,'',Result,visDefault,'',0));
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'anyType_Type','TBaseRemotable',TPasNativeClassType),'anyType');
|
AddSystemSymbol(Result,AContainer);
|
||||||
AddClassDef(Result,'TAbstractSimpleRemotable','TBaseRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TBaseRemotable','',TPasNativeClassType);
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'schema_Type','TAbstractSimpleRemotable'),'schema');
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'anyType_Type','TBaseRemotable',TPasNativeClassType),'anyType');
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDateRemotable','TAbstractSimpleRemotable'),'date');
|
AddClassDef(Result,'TAbstractSimpleRemotable','TBaseRemotable',TPasNativeClassType);
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDateTimeRemotable','TAbstractSimpleRemotable'),'dateTime');
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'schema_Type','TAbstractSimpleRemotable'),'schema');
|
||||||
{$IFDEF WST_HAS_TDURATIONREMOTABLE}
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDateRemotable','TAbstractSimpleRemotable'),'date');
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDurationRemotable','TAbstractSimpleRemotable'),'duration');
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDateTimeRemotable','TAbstractSimpleRemotable'),'dateTime');
|
||||||
{$ENDIF WST_HAS_TDURATIONREMOTABLE}
|
{$IFDEF WST_HAS_TDURATIONREMOTABLE}
|
||||||
AContainer.RegisterExternalAlias(AddClassDef(Result,'TTimeRemotable','TAbstractSimpleRemotable'),'time');
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'TDurationRemotable','TAbstractSimpleRemotable'),'duration');
|
||||||
|
{$ENDIF WST_HAS_TDURATIONREMOTABLE}
|
||||||
|
AContainer.RegisterExternalAlias(AddClassDef(Result,'TTimeRemotable','TAbstractSimpleRemotable'),'time');
|
||||||
|
|
||||||
AddClassDef(Result,'TAbstractComplexRemotable','TBaseRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TAbstractComplexRemotable','TBaseRemotable',TPasNativeClassType);
|
||||||
loc_TBaseComplexSimpleContentRemotable := AddClassDef(Result,'TBaseComplexSimpleContentRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
loc_TBaseComplexSimpleContentRemotable := AddClassDef(Result,'TBaseComplexSimpleContentRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
||||||
(AContainer.FindElementInModule('TComplexInt16SContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable;
|
(AContainer.FindElementInModule('TComplexInt16SContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable;
|
||||||
(AContainer.FindElementInModule('TComplexFloatDoubleContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable;
|
(AContainer.FindElementInModule('TComplexFloatDoubleContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable;
|
||||||
loc_TBaseComplexSimpleContentRemotable.AddRef();
|
loc_TBaseComplexSimpleContentRemotable.AddRef();
|
||||||
loc_TBaseComplexSimpleContentRemotable.AddRef();
|
loc_TBaseComplexSimpleContentRemotable.AddRef();
|
||||||
|
|
||||||
AddClassDef(Result,'TBaseComplexRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TBaseComplexRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
||||||
AddClassDef(Result,'THeaderBlock','TBaseComplexRemotable',TPasNativeClassType);
|
AddClassDef(Result,'THeaderBlock','TBaseComplexRemotable',TPasNativeClassType);
|
||||||
AddClassDef(Result,'TSimpleContentHeaderBlock','THeaderBlock',TPasNativeClassType);
|
AddClassDef(Result,'TSimpleContentHeaderBlock','THeaderBlock',TPasNativeClassType);
|
||||||
AddClassDef(Result,'TBaseArrayRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TBaseArrayRemotable','TAbstractComplexRemotable',TPasNativeClassType);
|
||||||
AddClassDef(Result,'TBaseObjectArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TBaseObjectArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
|
||||||
AddClassDef(Result,'TBaseSimpleTypeArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
|
AddClassDef(Result,'TBaseSimpleTypeArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
|
||||||
AddClassDef(Result,'TArrayOfStringRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfStringRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfBooleanRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfBooleanRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt8URemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt8URemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt8SRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt8SRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt16SRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt16SRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt16URemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt16URemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt32URemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt32URemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt32SRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt32SRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt64SRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt64SRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfInt64URemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfInt64URemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfFloatSingleRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfFloatSingleRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfFloatDoubleRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfFloatDoubleRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfFloatExtendedRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfFloatExtendedRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
AddClassDef(Result,'TArrayOfFloatCurrencyRemotable','TBaseSimpleTypeArrayRemotable');
|
AddClassDef(Result,'TArrayOfFloatCurrencyRemotable','TBaseSimpleTypeArrayRemotable');
|
||||||
|
|
||||||
AddAlias('token','string',Result);
|
AddAlias('token','string',Result);
|
||||||
AddAlias('language','string',Result);
|
AddAlias('language','string',Result);
|
||||||
AddAlias('anyURI','string',Result);
|
AddAlias('anyURI','string',Result);
|
||||||
AddAlias('ID','string',Result);
|
AddAlias('ID','string',Result);
|
||||||
//AddAlias('float','Single',Result);
|
//AddAlias('float','Single',Result);
|
||||||
AddAlias('nonNegativeInteger','LongWord',Result);
|
AddAlias('nonNegativeInteger','LongWord',Result);
|
||||||
AddAlias('positiveInteger','nonNegativeInteger',Result);
|
AddAlias('positiveInteger','nonNegativeInteger',Result);
|
||||||
{$IFNDEF WST_HAS_TDURATIONREMOTABLE}
|
{$IFNDEF WST_HAS_TDURATIONREMOTABLE}
|
||||||
AddAlias('duration','string',Result);
|
AddAlias('duration','string',Result);
|
||||||
{$ENDIF WST_HAS_TDURATIONREMOTABLE}
|
{$ENDIF WST_HAS_TDURATIONREMOTABLE}
|
||||||
{$IFNDEF WST_HAS_TTIMEREMOTABLE}
|
{$IFNDEF WST_HAS_TTIMEREMOTABLE}
|
||||||
AddAlias('time','string',Result);
|
AddAlias('time','string',Result);
|
||||||
{$ENDIF WST_HAS_TTIMEREMOTABLE}
|
{$ENDIF WST_HAS_TTIMEREMOTABLE}
|
||||||
except
|
except
|
||||||
FreeAndNil(Result);
|
FreeAndNil(Result);
|
||||||
raise;
|
raise;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
AContainer.DefaultSearchNameKinds := locOldNameKinds;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -635,6 +652,7 @@ end;
|
|||||||
constructor TwstPasTreeContainer.Create();
|
constructor TwstPasTreeContainer.Create();
|
||||||
begin
|
begin
|
||||||
FCaseSensitive := CASE_SENSITIVE_DEFAULT;
|
FCaseSensitive := CASE_SENSITIVE_DEFAULT;
|
||||||
|
FDefaultSearchNameKinds := NAME_KINDS_DEFAULT;
|
||||||
FPackage := TPasPackage.Create('sample',nil);
|
FPackage := TPasPackage.Create('sample',nil);
|
||||||
FBindingList := TObjectList.Create(True);
|
FBindingList := TObjectList.Create(True);
|
||||||
FProperties := TPropertyHolder.Create();
|
FProperties := TPropertyHolder.Create();
|
||||||
@@ -794,9 +812,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TwstPasTreeContainer.FindElementInModule(
|
||||||
|
const AName : String;
|
||||||
|
AModule : TPasModule
|
||||||
|
) : TPasElement;
|
||||||
|
begin
|
||||||
|
Result := FindElementInModule(AName,AModule,DefaultSearchNameKinds);
|
||||||
|
end;
|
||||||
|
|
||||||
function TwstPasTreeContainer.FindElement(const AName: String): TPasElement;
|
function TwstPasTreeContainer.FindElement(const AName: String): TPasElement;
|
||||||
begin
|
begin
|
||||||
Result := FindElement(AName,[elkDeclaredName,elkName]);
|
Result := FindElement(AName,DefaultSearchNameKinds);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TwstPasTreeContainer.FindElement(
|
function TwstPasTreeContainer.FindElement(
|
||||||
|
@@ -79,10 +79,14 @@ var
|
|||||||
if ( sourceType = sftXsd ) then begin
|
if ( sourceType = sftXsd ) then begin
|
||||||
AppOptions := AppOptions - [ cloProxy, cloImp, cloBinder, cloWsdl ];
|
AppOptions := AppOptions - [ cloProxy, cloImp, cloBinder, cloWsdl ];
|
||||||
end;
|
end;
|
||||||
if AnsiSameText('S',Trim(GetOptionArg(cloParserCaseSensitive))) then
|
if (cloParserCaseSensitive in AppOptions) then begin
|
||||||
|
if AnsiSameText('S',Trim(GetOptionArg(cloParserCaseSensitive))) then
|
||||||
|
Include(AppOptions,cloParserCaseSensitive);
|
||||||
|
if AnsiSameText('I',Trim(GetOptionArg(cloParserCaseSensitive))) then
|
||||||
|
Exclude(AppOptions,cloParserCaseSensitive);
|
||||||
|
end else begin
|
||||||
Include(AppOptions,cloParserCaseSensitive);
|
Include(AppOptions,cloParserCaseSensitive);
|
||||||
if AnsiSameText('I',Trim(GetOptionArg(cloParserCaseSensitive))) then
|
end;
|
||||||
Exclude(AppOptions,cloParserCaseSensitive);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenerateSymbolTable() : Boolean ;
|
function GenerateSymbolTable() : Boolean ;
|
||||||
|
@@ -440,24 +440,31 @@ procedure TWsdlParser.Execute(const AMode: TParserMode; const AModuleName: strin
|
|||||||
var
|
var
|
||||||
locSrvcCrs : IObjectCursor;
|
locSrvcCrs : IObjectCursor;
|
||||||
locObj : TDOMNodeRttiExposer;
|
locObj : TDOMNodeRttiExposer;
|
||||||
|
locOldNameKinds : TElementNameKinds;
|
||||||
begin
|
begin
|
||||||
Prepare(AModuleName);
|
locOldNameKinds := FSymbols.DefaultSearchNameKinds;
|
||||||
|
FSymbols.DefaultSearchNameKinds := [elkDeclaredName];
|
||||||
|
try
|
||||||
|
Prepare(AModuleName);
|
||||||
|
|
||||||
locSrvcCrs := FServiceCursor.Clone() as IObjectCursor;
|
locSrvcCrs := FServiceCursor.Clone() as IObjectCursor;
|
||||||
locSrvcCrs.Reset();
|
locSrvcCrs.Reset();
|
||||||
while locSrvcCrs.MoveNext() do begin
|
while locSrvcCrs.MoveNext() do begin
|
||||||
locObj := locSrvcCrs.GetCurrent() as TDOMNodeRttiExposer;
|
locObj := locSrvcCrs.GetCurrent() as TDOMNodeRttiExposer;
|
||||||
ParseService(locObj.InnerObject);
|
ParseService(locObj.InnerObject);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ( AMode = pmAllTypes ) then begin
|
||||||
|
ParseTypes();
|
||||||
|
end;
|
||||||
|
|
||||||
|
ParseForwardDeclarations();
|
||||||
|
SymbolTable.SetCurrentModule(FModule);
|
||||||
|
ExtractNameSpace();
|
||||||
|
FixUsesList();
|
||||||
|
finally
|
||||||
|
FSymbols.DefaultSearchNameKinds := locOldNameKinds;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if ( AMode = pmAllTypes ) then begin
|
|
||||||
ParseTypes();
|
|
||||||
end;
|
|
||||||
|
|
||||||
ParseForwardDeclarations();
|
|
||||||
SymbolTable.SetCurrentModule(FModule);
|
|
||||||
ExtractNameSpace();
|
|
||||||
FixUsesList();
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWsdlParser.ParseOperation(
|
function TWsdlParser.ParseOperation(
|
||||||
|
@@ -115,13 +115,15 @@ type
|
|||||||
FIncludeList : TStringList;
|
FIncludeList : TStringList;
|
||||||
FIncludeParsed : Boolean;
|
FIncludeParsed : Boolean;
|
||||||
FPrepared : Boolean;
|
FPrepared : Boolean;
|
||||||
|
FOldNameKinds : TElementNameKinds;
|
||||||
private
|
private
|
||||||
procedure DoOnMessage(const AMsgType : TMessageType; const AMsg : string);
|
procedure DoOnMessage(const AMsgType : TMessageType; const AMsg : string);
|
||||||
private
|
private
|
||||||
function FindNamedNode(AList : IObjectCursor; const AName : WideString; const AOrder : Integer = 0):TDOMNode;
|
function FindNamedNode(AList : IObjectCursor; const AName : WideString; const AOrder : Integer = 0):TDOMNode;
|
||||||
function GetParentContext() : IParserContext;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
function GetParentContext() : IParserContext;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
procedure Prepare(const AMustSucceed : Boolean);
|
procedure Prepare(const AMustSucceed : Boolean);
|
||||||
function FindElement(const AName: String) : TPasElement; {$IFDEF USE_INLINE}inline;{$ENDIF}
|
function FindElement(const AName: String) : TPasElement; overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
|
function FindElement(const AName: String; const ANameKinds : TElementNameKinds) : TPasElement; overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
protected
|
protected
|
||||||
function GetXsShortNames() : TStrings;
|
function GetXsShortNames() : TStrings;
|
||||||
function GetSymbolTable() : TwstPasTreeContainer;
|
function GetSymbolTable() : TwstPasTreeContainer;
|
||||||
@@ -217,6 +219,8 @@ begin
|
|||||||
FDoc := ADoc;
|
FDoc := ADoc;
|
||||||
FParentContext := Pointer(AParentContext);
|
FParentContext := Pointer(AParentContext);
|
||||||
FSymbols := ASymbols;
|
FSymbols := ASymbols;
|
||||||
|
FOldNameKinds := FSymbols.DefaultSearchNameKinds;
|
||||||
|
FSymbols.DefaultSearchNameKinds := [elkDeclaredName];
|
||||||
FSchemaNode := ASchemaNode;
|
FSchemaNode := ASchemaNode;
|
||||||
|
|
||||||
FNameSpaceList := TStringList.Create();
|
FNameSpaceList := TStringList.Create();
|
||||||
@@ -242,6 +246,8 @@ destructor TCustomXsdSchemaParser.Destroy();
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if (FSymbols <> nil) then
|
||||||
|
FSymbols.DefaultSearchNameKinds := FOldNameKinds;
|
||||||
FParentContext := nil;
|
FParentContext := nil;
|
||||||
FreeAndNil(FIncludeList);
|
FreeAndNil(FIncludeList);
|
||||||
FreeList(FNameSpaceList);
|
FreeList(FNameSpaceList);
|
||||||
@@ -298,6 +304,16 @@ begin
|
|||||||
Result := SymbolTable.FindElement(AName);
|
Result := SymbolTable.FindElement(AName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCustomXsdSchemaParser.FindElement(
|
||||||
|
const AName : String;
|
||||||
|
const ANameKinds : TElementNameKinds
|
||||||
|
) : TPasElement;
|
||||||
|
begin
|
||||||
|
Result := SymbolTable.FindElementInModule(AName,FModule,ANameKinds);
|
||||||
|
if ( Result = nil ) then
|
||||||
|
Result := SymbolTable.FindElement(AName,ANameKinds);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCustomXsdSchemaParser.ParseImportDocuments();
|
procedure TCustomXsdSchemaParser.ParseImportDocuments();
|
||||||
var
|
var
|
||||||
locOldCurrentModule : TPasModule;
|
locOldCurrentModule : TPasModule;
|
||||||
@@ -638,7 +654,7 @@ var
|
|||||||
if ASimpleTypeAlias.InheritsFrom(TPasNativeSimpleType) then begin
|
if ASimpleTypeAlias.InheritsFrom(TPasNativeSimpleType) then begin
|
||||||
locTypeHint := ExtractTypeHint(typNd);
|
locTypeHint := ExtractTypeHint(typNd);
|
||||||
if not IsStrEmpty(locTypeHint) then begin
|
if not IsStrEmpty(locTypeHint) then begin
|
||||||
locHintedType := FindElement(locTypeHint) as TPasType;
|
locHintedType := FindElement(locTypeHint,[elkName]) as TPasType;
|
||||||
if ( locHintedType <> nil ) then
|
if ( locHintedType <> nil ) then
|
||||||
ASimpleTypeAlias := locHintedType;
|
ASimpleTypeAlias := locHintedType;
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user