mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-24 09:19:50 +01:00
clean up
git-svn-id: trunk@11801 -
This commit is contained in:
parent
6d27521538
commit
09bb70e178
@ -854,7 +854,6 @@ end;
|
|||||||
procedure TCompilerDirectivesTree.DisableUnreachableBlocks(Undefines,
|
procedure TCompilerDirectivesTree.DisableUnreachableBlocks(Undefines,
|
||||||
Defines: TStrings; var Changed: boolean);
|
Defines: TStrings; var Changed: boolean);
|
||||||
type
|
type
|
||||||
|
|
||||||
PDefineChange = ^TDefineChange;
|
PDefineChange = ^TDefineChange;
|
||||||
TDefineChange = record
|
TDefineChange = record
|
||||||
Name: string;
|
Name: string;
|
||||||
@ -895,6 +894,16 @@ var
|
|||||||
var
|
var
|
||||||
Change: PDefineChange;
|
Change: PDefineChange;
|
||||||
begin
|
begin
|
||||||
|
// check if MacroName was already changed
|
||||||
|
Change:=Stack[StackPointer];
|
||||||
|
while (Change<>nil) do begin
|
||||||
|
if (CompareIdentifierPtrs(Pointer(MacroName),Pointer(Change^.Name))=0) then begin
|
||||||
|
// old status is already saved
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
Change:=Change^.Next;
|
||||||
|
end;
|
||||||
|
|
||||||
New(Change);
|
New(Change);
|
||||||
FillChar(Change^,SizeOf(TDefineChange),0);
|
FillChar(Change^,SizeOf(TDefineChange),0);
|
||||||
Change^.Name:=MacroName;
|
Change^.Name:=MacroName;
|
||||||
@ -915,10 +924,12 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SetStatus(Identifier: PChar; NewStatus: TDefineStatus;
|
procedure SetStatus(Identifier: PChar; NewStatus: TDefineStatus;
|
||||||
SaveOnStack: boolean = true);
|
SaveOnStack, SetGlobal: boolean);
|
||||||
var
|
var
|
||||||
AVLNode: TAVLTreeNode;
|
AVLNode: TAVLTreeNode;
|
||||||
DefValue: TDefineValue;
|
DefValue: TDefineValue;
|
||||||
|
i: Integer;
|
||||||
|
Change: PDefineChange;
|
||||||
begin
|
begin
|
||||||
AVLNode:=CurDefines.FindKey(Identifier,@ComparePCharWithDefineValue);
|
AVLNode:=CurDefines.FindKey(Identifier,@ComparePCharWithDefineValue);
|
||||||
if AVLNode=nil then begin
|
if AVLNode=nil then begin
|
||||||
@ -926,6 +937,7 @@ var
|
|||||||
DefValue:=TDefineValue.Create;
|
DefValue:=TDefineValue.Create;
|
||||||
DefValue.Name:=GetIdentifier(Identifier);
|
DefValue.Name:=GetIdentifier(Identifier);
|
||||||
DefValue.Status:=NewStatus;
|
DefValue.Status:=NewStatus;
|
||||||
|
if SaveOnStack then
|
||||||
AddStackChange(DefValue.Name,dsUnknown);
|
AddStackChange(DefValue.Name,dsUnknown);
|
||||||
end else begin
|
end else begin
|
||||||
// no change
|
// no change
|
||||||
@ -934,15 +946,33 @@ var
|
|||||||
DefValue:=TDefineValue(AVLNode.Data);
|
DefValue:=TDefineValue(AVLNode.Data);
|
||||||
if NewStatus<>dsUnknown then begin
|
if NewStatus<>dsUnknown then begin
|
||||||
if NewStatus<>DefValue.Status then begin
|
if NewStatus<>DefValue.Status then begin
|
||||||
|
if SaveOnStack then
|
||||||
AddStackChange(DefValue.Name,DefValue.Status);
|
AddStackChange(DefValue.Name,DefValue.Status);
|
||||||
DefValue.Status:=NewStatus;
|
DefValue.Status:=NewStatus;
|
||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
|
if SaveOnStack then
|
||||||
AddStackChange(DefValue.Name,DefValue.Status);
|
AddStackChange(DefValue.Name,DefValue.Status);
|
||||||
CurDefines.Delete(AVLNode);
|
CurDefines.Delete(AVLNode);
|
||||||
DefValue.Free;
|
DefValue.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if SetGlobal then begin
|
||||||
|
for i:=StackPointer downto 0 do begin
|
||||||
|
Change:=Stack[i];
|
||||||
|
while Change<>nil do begin
|
||||||
|
if CompareIdentifiers(PChar(Change^.Name),Identifier)=0 then begin
|
||||||
|
if (Change^.OldStatus=dsUnknown)
|
||||||
|
or (Change^.OldStatus=NewStatus) then begin
|
||||||
|
// ok
|
||||||
|
end else begin
|
||||||
|
Change^.OldStatus:=dsUnknown;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Change:=Change^.Next;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure InitDefines;
|
procedure InitDefines;
|
||||||
@ -954,13 +984,13 @@ var
|
|||||||
if Undefines<>nil then begin
|
if Undefines<>nil then begin
|
||||||
for i:=0 to Undefines.Count-1 do
|
for i:=0 to Undefines.Count-1 do
|
||||||
if Undefines[i]<>'' then
|
if Undefines[i]<>'' then
|
||||||
SetStatus(PChar(Undefines[i]),dsNotDefined);
|
SetStatus(PChar(Undefines[i]),dsNotDefined,false,false);
|
||||||
end;
|
end;
|
||||||
if Defines<>nil then begin
|
if Defines<>nil then begin
|
||||||
for i:=0 to Defines.Count-1 do begin
|
for i:=0 to Defines.Count-1 do begin
|
||||||
CurName:=Defines.Names[i];
|
CurName:=Defines.Names[i];
|
||||||
if CurName='' then continue;
|
if CurName='' then continue;
|
||||||
SetStatus(PChar(CurName),dsDefined);
|
SetStatus(PChar(CurName),dsDefined,false,false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -989,7 +1019,7 @@ var
|
|||||||
// undo all changes
|
// undo all changes
|
||||||
while Stack[StackPointer]<>nil do begin
|
while Stack[StackPointer]<>nil do begin
|
||||||
Change:=Stack[StackPointer];
|
Change:=Stack[StackPointer];
|
||||||
SetStatus(PChar(Change^.Name),Change^.OldStatus,false);
|
SetStatus(PChar(Change^.Name),Change^.OldStatus,false,false);
|
||||||
Stack[StackPointer]:=Change^.Next;
|
Stack[StackPointer]:=Change^.Next;
|
||||||
Dispose(Change);
|
Dispose(Change);
|
||||||
end;
|
end;
|
||||||
@ -1023,8 +1053,8 @@ begin
|
|||||||
if Node.Desc=cdnIf then begin
|
if Node.Desc=cdnIf then begin
|
||||||
IsIfBlock:=true;
|
IsIfBlock:=true;
|
||||||
end else begin
|
end else begin
|
||||||
|
IsIfBlock:=false;
|
||||||
// close prior block
|
// close prior block
|
||||||
IsIfBlock:=false;// it is an Else-block
|
|
||||||
Pop;
|
Pop;
|
||||||
end;
|
end;
|
||||||
// start new block
|
// start new block
|
||||||
@ -1053,7 +1083,7 @@ begin
|
|||||||
BlockIsAlwaysReached:=OldStatus=NewStatus;
|
BlockIsAlwaysReached:=OldStatus=NewStatus;
|
||||||
BlockIsNeverReached:=(OldStatus<>dsUnknown) and (OldStatus<>NewStatus);
|
BlockIsNeverReached:=(OldStatus<>dsUnknown) and (OldStatus<>NewStatus);
|
||||||
if BlockIsReachable then
|
if BlockIsReachable then
|
||||||
SetStatus(Identifier,NewStatus);
|
SetStatus(Identifier,NewStatus,true,false);
|
||||||
if BlockIsAlwaysReached or BlockIsNeverReached then begin
|
if BlockIsAlwaysReached or BlockIsNeverReached then begin
|
||||||
// this block can be removed
|
// this block can be removed
|
||||||
NextNode:=Node.NextBrother;
|
NextNode:=Node.NextBrother;
|
||||||
@ -1094,8 +1124,8 @@ begin
|
|||||||
NewStatus:=dsDefined
|
NewStatus:=dsDefined
|
||||||
else
|
else
|
||||||
NewStatus:=dsNotDefined;
|
NewStatus:=dsNotDefined;
|
||||||
// TODO: set status not only for stack level, but all levels
|
// set status on all levels
|
||||||
SetStatus(@Src[NameStart],NewStatus);
|
SetStatus(@Src[NameStart],NewStatus,false,true);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Node:=NextNode;
|
Node:=NextNode;
|
||||||
|
|||||||
@ -6082,10 +6082,10 @@ begin
|
|||||||
nil,'ModalResult',TModalResultPropertyEditor);
|
nil,'ModalResult',TModalResultPropertyEditor);
|
||||||
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TShortCut'),
|
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TShortCut'),
|
||||||
nil,'',TShortCutPropertyEditor);
|
nil,'',TShortCutPropertyEditor);
|
||||||
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDate'),
|
//RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDate'),
|
||||||
nil,'',TShortCutPropertyEditor);
|
// nil,'',TDatePropertyEditor);
|
||||||
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TTime'),
|
//RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TTime'),
|
||||||
nil,'',TShortCutPropertyEditor);
|
// nil,'',TTimePropertyEditor);
|
||||||
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDateTime'),
|
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDateTime'),
|
||||||
nil,'',TDateTimePropertyEditor);
|
nil,'',TDateTimePropertyEditor);
|
||||||
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TCursor'),
|
RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TCursor'),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user