mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 15:47:53 +02:00

to the parser, so that it only looks at what the programmer wrote rather than at all statements that the compiler may generate internally (mantis #11619) + several tests for {$x-} mode * modified tenumerators1 so it compiles without extended syntax enabled (to check for..in with {$x-}) git-svn-id: trunk@15075 -
172 lines
3.2 KiB
ObjectPascal
172 lines
3.2 KiB
ObjectPascal
program tenumerators1;
|
|
|
|
{$ifdef fpc}
|
|
{$mode objfpc}{$H+}
|
|
{$endif}
|
|
{$apptype console}
|
|
{$x-}
|
|
uses
|
|
Classes;
|
|
|
|
{$ifndef fpc}
|
|
type
|
|
PtrInt = integer;
|
|
{$endif}
|
|
|
|
{$ifdef fpc}
|
|
procedure CheckFPListEnumerator;
|
|
var
|
|
Item: Pointer;
|
|
List: TFPList;
|
|
Enumerator: TFPListEnumerator;
|
|
i: integer;
|
|
begin
|
|
// check TFPList enumerator
|
|
List := TFPList.Create;
|
|
i:=List.Add(Pointer(1));
|
|
i:=List.Add(Pointer(2));
|
|
i:=List.Add(Pointer(3));
|
|
|
|
Enumerator := List.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(PtrInt(Item));
|
|
end;
|
|
Enumerator.Free;
|
|
List.Free;
|
|
end;
|
|
{$endif}
|
|
|
|
procedure CheckListEnumerator;
|
|
var
|
|
Item: Pointer;
|
|
List: TList;
|
|
Enumerator: TListEnumerator;
|
|
i: integer;
|
|
begin
|
|
// check TList enumerator
|
|
List := TList.Create;
|
|
i:=List.Add(Pointer(1));
|
|
i:=List.Add(Pointer(2));
|
|
i:=List.Add(Pointer(3));
|
|
|
|
Enumerator := List.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(PtrInt(Item));
|
|
end;
|
|
Enumerator.Free;
|
|
List.Free;
|
|
end;
|
|
|
|
procedure CheckCollectionEnumerator;
|
|
var
|
|
Item: TCollectionItem;
|
|
Collection: TCollection;
|
|
Enumerator: TCollectionEnumerator;
|
|
begin
|
|
// check TCollection enumerator
|
|
Collection := TCollection.Create(TCollectionItem);
|
|
item:=Collection.Add;
|
|
item:=Collection.Add;
|
|
item:=Collection.Add;
|
|
|
|
Enumerator := Collection.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(PtrInt(Item));
|
|
end;
|
|
Enumerator.Free;
|
|
Collection.Free;
|
|
end;
|
|
|
|
procedure CheckStringsEnumerator;
|
|
var
|
|
Item: String;
|
|
Strings: TStrings;
|
|
Enumerator: TStringsEnumerator;
|
|
i: integer;
|
|
begin
|
|
// check TStrings enumerator
|
|
Strings := TStringList.Create;
|
|
i:=Strings.Add('1');
|
|
i:=Strings.Add('2');
|
|
i:=Strings.Add('3');
|
|
|
|
Enumerator := Strings.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(Item);
|
|
end;
|
|
Enumerator.Free;
|
|
Strings.Free;
|
|
end;
|
|
|
|
procedure CheckComponentEnumerator;
|
|
var
|
|
Item: TComponent;
|
|
Component: TComponent;
|
|
Enumerator: TComponentEnumerator;
|
|
begin
|
|
// check TComponent enumerator
|
|
Component := TComponent.Create(nil);
|
|
item:=TComponent.Create(Component);
|
|
item:=TComponent.Create(Component);
|
|
item:=TComponent.Create(Component);
|
|
|
|
Enumerator := Component.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(PtrInt(Item));
|
|
end;
|
|
Enumerator.Free;
|
|
Component.Free;
|
|
end;
|
|
|
|
procedure CheckInterfaceListEnumerator;
|
|
var
|
|
Item: IUnknown;
|
|
List: TInterfaceList;
|
|
Enumerator: TInterfaceListEnumerator;
|
|
i: integer;
|
|
begin
|
|
// check TInterfaceList enumerator
|
|
List := TInterfaceList.Create;
|
|
Item := TInterfacedObject.Create;
|
|
i:=List.Add(Item);
|
|
Item := TInterfacedObject.Create;
|
|
i:=List.Add(Item);
|
|
Item := TInterfacedObject.Create;
|
|
i:=List.Add(Item);
|
|
|
|
Enumerator := List.GetEnumerator;
|
|
while Enumerator.MoveNext do
|
|
begin
|
|
Item := Enumerator.Current;
|
|
WriteLn(PtrInt(Item));
|
|
end;
|
|
Enumerator.Free;
|
|
Item := nil;
|
|
List.Free;
|
|
end;
|
|
|
|
begin
|
|
{$ifdef fpc}
|
|
WriteLn('Testing FPC');
|
|
CheckFPListEnumerator;
|
|
{$else}
|
|
WriteLn('Testing Delphi');
|
|
{$endif}
|
|
CheckListEnumerator;
|
|
CheckCollectionEnumerator;
|
|
CheckStringsEnumerator;
|
|
CheckComponentEnumerator;
|
|
CheckInterfaceListEnumerator;
|
|
end.
|
|
|