mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 00:19:19 +02:00
* do not crash but give a fatal error when using Objective-Pascal code
without {$modeswitch objectivec1} git-svn-id: trunk@15163 -
This commit is contained in:
parent
2eddd5e704
commit
0dcedf3799
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -8830,6 +8830,7 @@ tests/test/opt/twpo7.pp svneol=native#text/plain
|
|||||||
tests/test/opt/uwpo2.pp svneol=native#text/plain
|
tests/test/opt/uwpo2.pp svneol=native#text/plain
|
||||||
tests/test/packages/cocoaint/tobjcnh1.pp svneol=native#text/plain
|
tests/test/packages/cocoaint/tobjcnh1.pp svneol=native#text/plain
|
||||||
tests/test/packages/cocoaint/tvarpara.pp svneol=native#text/plain
|
tests/test/packages/cocoaint/tvarpara.pp svneol=native#text/plain
|
||||||
|
tests/test/packages/cocoaint/tw16329.pp svneol=native#text/plain
|
||||||
tests/test/packages/fcl-base/tascii85.pp svneol=native#text/plain
|
tests/test/packages/fcl-base/tascii85.pp svneol=native#text/plain
|
||||||
tests/test/packages/fcl-base/tgettext1.pp svneol=native#text/plain
|
tests/test/packages/fcl-base/tgettext1.pp svneol=native#text/plain
|
||||||
tests/test/packages/fcl-db/assertions.pas svneol=native#text/plain
|
tests/test/packages/fcl-db/assertions.pas svneol=native#text/plain
|
||||||
|
@ -1307,6 +1307,9 @@ parser_e_no_paras_for_class_destructor=03291_E_Class destructors can't have para
|
|||||||
% You are declaring a class destructor with a parameter list. Class destructor methods
|
% You are declaring a class destructor with a parameter list. Class destructor methods
|
||||||
% cannot have parameters.
|
% cannot have parameters.
|
||||||
% \end{description}
|
% \end{description}
|
||||||
|
parser_f_modeswitch_objc_required=03292_F_This construct requires the \{\$modeswitch objectivec1\} mode switch to be active
|
||||||
|
% Objective-Pascal constructs are not supported when \{\$modeswitch ObjectiveC1\}
|
||||||
|
% is not active.
|
||||||
#
|
#
|
||||||
# Type Checking
|
# Type Checking
|
||||||
#
|
#
|
||||||
|
@ -380,6 +380,7 @@ const
|
|||||||
parser_e_only_one_class_destructor_allowed=03289;
|
parser_e_only_one_class_destructor_allowed=03289;
|
||||||
parser_e_no_paras_for_class_constructor=03290;
|
parser_e_no_paras_for_class_constructor=03290;
|
||||||
parser_e_no_paras_for_class_destructor=03291;
|
parser_e_no_paras_for_class_destructor=03291;
|
||||||
|
parser_f_modeswitch_objc_required=03292;
|
||||||
type_e_mismatch=04000;
|
type_e_mismatch=04000;
|
||||||
type_e_incompatible_types=04001;
|
type_e_incompatible_types=04001;
|
||||||
type_e_not_equal_types=04002;
|
type_e_not_equal_types=04002;
|
||||||
@ -858,9 +859,9 @@ const
|
|||||||
option_info=11024;
|
option_info=11024;
|
||||||
option_help_pages=11025;
|
option_help_pages=11025;
|
||||||
|
|
||||||
MsgTxtSize = 56309;
|
MsgTxtSize = 56399;
|
||||||
|
|
||||||
MsgIdxMax : array[1..20] of longint=(
|
MsgIdxMax : array[1..20] of longint=(
|
||||||
24,88,292,96,80,51,110,22,202,63,
|
24,88,293,96,80,51,110,22,202,63,
|
||||||
49,20,1,1,1,1,1,1,1,1
|
49,20,1,1,1,1,1,1,1,1
|
||||||
);
|
);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -58,7 +58,7 @@ implementation
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
sysutils,
|
sysutils,
|
||||||
globtype,cclasses,systems,
|
globtype,globals,cclasses,systems,
|
||||||
verbose,pass_1,
|
verbose,pass_1,
|
||||||
defutil,
|
defutil,
|
||||||
symtype,symtable,symdef,symconst,symsym,
|
symtype,symtable,symdef,symconst,symsym,
|
||||||
@ -84,6 +84,8 @@ function tobjcselectornode.pass_typecheck: tnode;
|
|||||||
len: longint;
|
len: longint;
|
||||||
s: shortstring;
|
s: shortstring;
|
||||||
begin
|
begin
|
||||||
|
if not(m_objectivec1 in current_settings.modeswitches) then
|
||||||
|
Message(parser_f_modeswitch_objc_required);
|
||||||
result:=nil;
|
result:=nil;
|
||||||
typecheckpass(left);
|
typecheckpass(left);
|
||||||
{ argument can be
|
{ argument can be
|
||||||
@ -141,6 +143,8 @@ constructor tobjcprotocolnode.create(forprotocol: tnode);
|
|||||||
|
|
||||||
function tobjcprotocolnode.pass_typecheck: tnode;
|
function tobjcprotocolnode.pass_typecheck: tnode;
|
||||||
begin
|
begin
|
||||||
|
if not(m_objectivec1 in current_settings.modeswitches) then
|
||||||
|
Message(parser_f_modeswitch_objc_required);
|
||||||
result:=nil;
|
result:=nil;
|
||||||
typecheckpass(left);
|
typecheckpass(left);
|
||||||
if (left.nodetype<>typen) then
|
if (left.nodetype<>typen) then
|
||||||
|
8
tests/test/packages/cocoaint/tw16329.pp
Normal file
8
tests/test/packages/cocoaint/tw16329.pp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ %fail }
|
||||||
|
{ %target=darwin }
|
||||||
|
|
||||||
|
uses objc,CocoaAll;
|
||||||
|
var workspace:NSWorkspace;
|
||||||
|
begin
|
||||||
|
workspace:=NSWorkspace.sharedWorkspace;
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user