8aae434443
Problem reported as PR pascal/17815 Part 1/3: Remember the case pattern that allowed finding a field of this. File gdb/p-exp.y modified This is the fix in the pascal parser (p-exp.y), to avoid the error that GDB does find normal variables case insensitively, but not fields of this, inside a class or object method. Part 2/3: Add "class" option for pascal compiler File gdb/testsuite/lib/pascal.exp This part of the patch series is unchanged. It adds class option to pascal compiler which adds the required command line option to accept pascal class types. Part 3/3: New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas Here is an updated version of this test, using Pedro's suggestions. Test to check that PR 17815 is fixed.
63 lines
1.2 KiB
ObjectPascal
63 lines
1.2 KiB
ObjectPascal
{
|
|
Copyright 2015 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
}
|
|
|
|
|
|
program test_gdb_17815;
|
|
|
|
|
|
type
|
|
TA = class
|
|
public
|
|
x, y : integer;
|
|
constructor Create;
|
|
function check(b : TA) : boolean;
|
|
destructor Done; virtual;
|
|
end;
|
|
|
|
constructor TA.Create;
|
|
begin
|
|
x:=-1;
|
|
y:=-1;
|
|
end;
|
|
|
|
destructor TA.Done;
|
|
begin
|
|
end;
|
|
|
|
function TA.check (b : TA) : boolean;
|
|
begin
|
|
check:=(x < b.x); { set breakpoint here }
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
a, b : TA;
|
|
|
|
begin
|
|
a:=TA.Create;
|
|
b:=TA.Create;
|
|
a.x := 67;
|
|
a.y := 33;
|
|
b.x := 11;
|
|
b.y := 35;
|
|
if a.check (b) then
|
|
writeln('Error in check')
|
|
else
|
|
writeln('check OK');
|
|
end.
|
|
|