mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 17:30:30 +02:00
* Merging revisions 42904 from trunk:
------------------------------------------------------------------------ r42904 | michael | 2019-09-02 14:36:37 +0200 (Mon, 02 Sep 2019) | 1 line * Additional case where whitespace can mess up (bug ID 36037) ------------------------------------------------------------------------ git-svn-id: branches/fixes_3_2@43254 -
This commit is contained in:
parent
d785134a57
commit
b4ac2e2027
@ -258,6 +258,14 @@ begin
|
||||
FCurToken := Result;
|
||||
exit;
|
||||
end;
|
||||
// Empty line
|
||||
if (FTokenStr=FEOL) then
|
||||
begin
|
||||
Result := tkWhiteSpace;
|
||||
FCurToken := Result;
|
||||
exit;
|
||||
end;
|
||||
|
||||
|
||||
FCurTokenString := '';
|
||||
|
||||
@ -272,13 +280,13 @@ begin
|
||||
Result := tkWhitespace;
|
||||
repeat
|
||||
Inc(FTokenStr);
|
||||
if FTokenStr[0] = #0 then
|
||||
if (FTokenStr[0] = #0) or (FTokenStr=FEOL) then
|
||||
if not FetchLine then
|
||||
begin
|
||||
FCurToken := Result;
|
||||
exit;
|
||||
end;
|
||||
until not (FTokenStr[0] in [#9, ' ']);
|
||||
until not (FTokenStr[0] in [#9, ' ',#10, #13]);
|
||||
end;
|
||||
'"','''':
|
||||
begin
|
||||
|
@ -70,6 +70,7 @@ type
|
||||
Procedure TestHandlerResult;
|
||||
Procedure TestHandlerResultStream;
|
||||
Procedure TestEmptyLine;
|
||||
procedure TestBug36037Part2;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -540,20 +541,23 @@ begin
|
||||
end;
|
||||
|
||||
procedure TTestParser.TestEmptyLine;
|
||||
|
||||
// Bug report 36037
|
||||
Const MyJSON =
|
||||
' {'+sLineBreak+
|
||||
' "pylib__linux" : "libpython3.7m.so.1.0",'+sLineBreak+
|
||||
' "ui_toolbar_theme": "default_24x24",'+sLineBreak+
|
||||
' "ui_toolbar_show" : true,'+sLineBreak+
|
||||
' "font_name__linux" : "DejaVu Sans Mono",'+sLineBreak+
|
||||
' "font_size__linux" : 10,'+sLineBreak+
|
||||
' "ui_listbox_fuzzy": false,'+sLineBreak+
|
||||
' "ui_max_size_lexer": 5,'+sLineBreak+
|
||||
' "find_separate_form": false,'+sLineBreak+sLineBreak+
|
||||
'}';
|
||||
var
|
||||
J : TJSONData;
|
||||
|
||||
Const
|
||||
MyJSON =
|
||||
' {'+sLineBreak+
|
||||
' "pylib__linux" : "libpython3.7m.so.1.0",'+sLineBreak+
|
||||
' "ui_toolbar_theme": "default_24x24",'+sLineBreak+
|
||||
' "ui_toolbar_show" : true,'+sLineBreak+
|
||||
' "font_name__linux" : "DejaVu Sans Mono",'+sLineBreak+
|
||||
' "font_size__linux" : 10,'+sLineBreak+
|
||||
' "ui_listbox_fuzzy": false,'+sLineBreak+
|
||||
' "ui_max_size_lexer": 5,'+sLineBreak+
|
||||
' "find_separate_form": false,'+sLineBreak+sLineBreak+
|
||||
'}';
|
||||
var
|
||||
J : TJSONData;
|
||||
begin
|
||||
With TJSONParser.Create(MyJSON,[joUTF8,joIgnoreTrailingComma]) do
|
||||
Try
|
||||
@ -564,6 +568,40 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestParser.TestBug36037Part2;
|
||||
|
||||
Const
|
||||
MyJSON =
|
||||
|
||||
'{'+sLineBreak+
|
||||
' "tab_spaces": true,'+sLineBreak+
|
||||
' //auto-indent kind:'+sLineBreak+
|
||||
' // 0: indent like in prev line'+sLineBreak+
|
||||
' // 1: by spaces'+sLineBreak+
|
||||
' // 2: by tabs+spaces'+sLineBreak+
|
||||
' // 3: by tabs only'+sLineBreak+
|
||||
' "indent_kind": 1,'+sLineBreak+
|
||||
' "indent_size": 4,'+sLineBreak+
|
||||
''+sLineBreak+
|
||||
' "saving_trim_spaces": true,'+sLineBreak+
|
||||
''+sLineBreak+
|
||||
'// "config_menus_from": "kv-menu JSON.json",'+sLineBreak+
|
||||
' "find_hotkey_replace": "Alt+Enter",'+sLineBreak+
|
||||
' "fold_style": 4,'+sLineBreak+
|
||||
'}'+sLineBreak;
|
||||
|
||||
var
|
||||
J : TJSONData;
|
||||
begin
|
||||
With TJSONParser.Create(MyJSON,[joUTF8,joIgnoreTrailingComma,joComments]) do
|
||||
Try
|
||||
J:=Parse;
|
||||
J.Free;
|
||||
Finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestParser.DoTestError(S : String; Options : TJSONOptions = DefaultOpts);
|
||||
|
||||
Var
|
||||
|
Loading…
Reference in New Issue
Block a user