fpc/tests/test/tconstref1.pp
joost 07bf44517c * Merged XPCom branch into trunk, added support for constref and changed
the IInterface implementation to be XPCom-compatible
--- Merging r15997 through r16179 into '.':
U    rtl/inc/variants.pp
U    rtl/inc/objpash.inc
U    rtl/inc/objpas.inc
U    rtl/objpas/classes/persist.inc
U    rtl/objpas/classes/compon.inc
U    rtl/objpas/classes/classesh.inc
A    tests/test/tconstref1.pp
A    tests/test/tconstref2.pp
A    tests/test/tconstref3.pp
U    tests/test/tinterface4.pp
A    tests/test/tconstref4.pp
U    tests/webtbs/tw10897.pp
U    tests/webtbs/tw4086.pp
U    tests/webtbs/tw15363.pp
U    tests/webtbs/tw2177.pp
U    tests/webtbs/tw16592.pp
U    tests/tbs/tb0546.pp
U    compiler/sparc/cpupara.pas
U    compiler/i386/cpupara.pas
U    compiler/pdecsub.pas
U    compiler/symdef.pas
U    compiler/powerpc/cpupara.pas
U    compiler/avr/cpupara.pas
U    compiler/browcol.pas
U    compiler/defcmp.pas
U    compiler/powerpc64/cpupara.pas
U    compiler/ncgrtti.pas
U    compiler/x86_64/cpupara.pas
U    compiler/opttail.pas
U    compiler/htypechk.pas
U    compiler/tokens.pas
U    compiler/objcutil.pas
U    compiler/ncal.pas
U    compiler/symtable.pas
U    compiler/symsym.pas
U    compiler/m68k/cpupara.pas
U    compiler/regvars.pas
U    compiler/arm/cpupara.pas
U    compiler/symconst.pas
U    compiler/mips/cpupara.pas
U    compiler/paramgr.pas
U    compiler/psub.pas
U    compiler/pdecvar.pas
U    compiler/dbgstabs.pas
U    compiler/options.pas
U    packages/fcl-fpcunit/src/testutils.pp

git-svn-id: trunk@16180 -
2010-10-17 20:58:22 +00:00

54 lines
989 B
ObjectPascal

program tConstRef1;
{$mode objfpc}{$h+}
uses
Classes, SysUtils;
type
TConstRefProc = procedure(constref AParam: integer);
TAClass = class(tobject)
private
function GetSomething(constref int:integer): integer;
public
property Something[constref int:integer] : integer read getSomething;
end;
function TAClass.GetSomething(constref int: integer): integer;
begin
if int<>$1234567 then
halt(1);
result := $54321;
end;
procedure TestConstRef(constref AParam: integer); [public, alias: '_TESTCONSTREF'];
begin
if AParam<>$1234567 then
halt(1);
end;
procedure TestConstRefAlias(AParam: PInteger); [external name '_TESTCONSTREF'];
const c = $1234567;
var a: integer;
aclass: TAClass;
p: TConstRefProc;
begin
a := $1234567;
TestConstRef(a);
TestConstRef(c);
TestConstRef($1234567);
TestConstRefAlias(@a);
aclass := TAClass.Create;
if aclass.Something[a]<>$54321 then
halt(1);
aclass.Free;
p := @TestConstRef;
p(c);
end.