mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 18:59:21 +02:00
Codetools: Add test for code-completion keywords
This commit is contained in:
parent
3e2872c0f7
commit
2182681a6e
110
components/codetools/tests/laztests/tcompletion_keywords.pas
Normal file
110
components/codetools/tests/laztests/tcompletion_keywords.pas
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
{%identcomplincludekeywords:on}
|
||||||
|
unit {completion:+5=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
tcompletion_keywords {completion:+21=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+2=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
{$ModeSwitch typehelpers}
|
||||||
|
{$ModeSwitch advancedrecords}
|
||||||
|
|
||||||
|
interface {completion:+11=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
|
||||||
|
uses {completion:+5=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
system {completion:+7=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
;
|
||||||
|
|
||||||
|
const {completion:+6=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
MYCONST
|
||||||
|
= {completion:+2=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
1 {completion:+2=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+2=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
MYCONST_B = 'test' ; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
|
||||||
|
var {completion:+4=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
MyVar {completion:+6=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
: {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
Integer {completion:+8=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
MyVar2: TObject ; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not,!case}
|
||||||
|
// TODO: "case" in record
|
||||||
|
MyVar3: record {completion:+7=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
a: Integer ; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
a2 {completion:+3=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
: {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
Integer {completion:+8=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
case
|
||||||
|
boolean {completion:+8=!do,!label,!repeat,!else,!inherited,!and,!not} // TODO: "of"
|
||||||
|
of
|
||||||
|
true: (
|
||||||
|
b: TObject;
|
||||||
|
);
|
||||||
|
false: (
|
||||||
|
c: array [0..1] of integer;
|
||||||
|
);
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TFoo {completion:+5=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
= {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
class {completion:+6=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
;
|
||||||
|
|
||||||
|
TIntA = {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not} // TODO: "array"
|
||||||
|
array {completion:+6=!do,!label,!repeat,!else,!inherited,!and,!not} // TODO: "of"
|
||||||
|
of
|
||||||
|
integer;
|
||||||
|
|
||||||
|
TIntB = array
|
||||||
|
[ 0..9 ] {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not} // TODO: "of"
|
||||||
|
of
|
||||||
|
integer;
|
||||||
|
|
||||||
|
TFoo = class {completion:+6=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
( {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
TObject {completion:+8=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
) {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
a {completion:+2=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
: {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
Integer {completion:+8=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
private
|
||||||
|
procedure {completion:+10=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
Bar {completion:+5=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
; {completion:+1=!do,!label,!repeat,!else,!inherited,!and,!not}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SomeProc(val: Integer; var v2, v3: TIntA);
|
||||||
|
function f1: TObject;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
var
|
||||||
|
bVal: Boolean;
|
||||||
|
iVal: integer;
|
||||||
|
ia: TIntA;
|
||||||
|
|
||||||
|
procedure SomeProc(val: Integer);
|
||||||
|
begin {completion:+6=!do,!label,repeat,!else,inherited,!and,!not}
|
||||||
|
; {completion:+1=!do,!label,repeat,!else,inherited,!and,!not}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SomeProc(val: Integer; var v2, v3: TIntA);
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
function f1: TObject;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFoo.Bar;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if {completion:+3=!and,not,inherited} // +3 test in space after if
|
||||||
|
iVal {completion:!and,!in,not,inherited;+1=!and,!in,!not,inherited;+5=and,in,!not,!inherited} // + 5 in spaces after iVal
|
||||||
|
end.
|
||||||
|
|
@ -24,6 +24,9 @@
|
|||||||
|
|
||||||
(* Expectation in test-files
|
(* Expectation in test-files
|
||||||
|
|
||||||
|
{%identcomplincludekeywords:on}
|
||||||
|
Enables CodeToolBoss.IdentComplIncludeKeywords
|
||||||
|
|
||||||
{SELECT:TESTS=TEST(|TEST)*}
|
{SELECT:TESTS=TEST(|TEST)*}
|
||||||
Each "{" comment starting with a..z is a test instruction, or a list of test instructions separated by |
|
Each "{" comment starting with a..z is a test instruction, or a list of test instructions separated by |
|
||||||
|
|
||||||
@ -278,6 +281,11 @@ begin
|
|||||||
DoParseModule(MainCode,FMainTool);
|
DoParseModule(MainCode,FMainTool);
|
||||||
CommentP:=1;
|
CommentP:=1;
|
||||||
Src:=MainTool.Src;
|
Src:=MainTool.Src;
|
||||||
|
|
||||||
|
CodeToolBoss.IdentComplIncludeKeywords := False;
|
||||||
|
if pos('{%identcomplincludekeywords:on}', LowerCase(Src)) > 0 then
|
||||||
|
CodeToolBoss.IdentComplIncludeKeywords := True;
|
||||||
|
|
||||||
while CommentP<length(Src) do begin
|
while CommentP<length(Src) do begin
|
||||||
CommentP:=FindNextComment(Src,CommentP);
|
CommentP:=FindNextComment(Src,CommentP);
|
||||||
if CommentP>length(Src) then break;
|
if CommentP>length(Src) then break;
|
||||||
@ -472,6 +480,7 @@ begin
|
|||||||
until CommentP >= CommentEnd;
|
until CommentP >= CommentEnd;
|
||||||
end;
|
end;
|
||||||
CheckReferenceMarkers;
|
CheckReferenceMarkers;
|
||||||
|
CodeToolBoss.IdentComplIncludeKeywords := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCustomTestFindDeclaration.GetMarkers(Index: integer): TFDMarker;
|
function TCustomTestFindDeclaration.GetMarkers(Index: integer): TFDMarker;
|
||||||
@ -515,6 +524,7 @@ procedure TCustomTestFindDeclaration.SetUp;
|
|||||||
begin
|
begin
|
||||||
inherited SetUp;
|
inherited SetUp;
|
||||||
FMarkers:=TObjectList.Create(true);
|
FMarkers:=TObjectList.Create(true);
|
||||||
|
CodeToolBoss.IdentComplIncludeKeywords := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomTestFindDeclaration.TearDown;
|
procedure TCustomTestFindDeclaration.TearDown;
|
||||||
|
Loading…
Reference in New Issue
Block a user