fix #1149
This commit is contained in:
parent
7bfd14383a
commit
1efb46a659
11
TestSuite/errors/err0261.pas
Normal file
11
TestSuite/errors/err0261.pas
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
type
|
||||
t1<T>=class
|
||||
|
||||
private class function MessageBox(wnd: System.IntPtr; message, caption: string; flags: cardinal):integer;
|
||||
external 'User32.dll';
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
var a := new t1<byte>;
|
||||
end.
|
||||
11
TestSuite/errors/err0262.pas
Normal file
11
TestSuite/errors/err0262.pas
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
type
|
||||
t1=class
|
||||
|
||||
private class function MessageBox<T>(wnd: System.IntPtr; message, caption: string; flags: cardinal):integer;
|
||||
external 'User32.dll';
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
|
|
@ -16789,6 +16789,11 @@ namespace PascalABCCompiler.TreeConverter
|
|||
string name = "";
|
||||
if (context.converted_func_stack.top() is common_method_node && (context.converted_func_stack.top() as common_method_node).polymorphic_state != SemanticTree.polymorphic_state.ps_static)
|
||||
AddError(context.top_function.loc, "EXTERNAL_METHOD_SHOULD_BE_STATIC");
|
||||
if (context.converted_func_stack.top().is_generic_function)
|
||||
AddError(context.top_function.loc, "EXTERNAL_METHOD_CANNOT_BE_GENERIC");
|
||||
if (context.converted_func_stack.top() is common_method_node && (context.converted_func_stack.top() as common_method_node).common_comprehensive_type.is_generic_type_definition)
|
||||
AddError(context.top_function.loc, "EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE");
|
||||
|
||||
if (_external_directive.modulename == null)
|
||||
{
|
||||
if (!has_dll_import_attribute(context.top_function))
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@ EXPRESSION_EXPECTED=Expression expected
|
|||
CLASS_ATTRIBUTE_NOT_ALLOWED_IN_CLASS_PREDEFINTIONS=Can not declare class attributes in class predefintions
|
||||
GENERIC_RECORDS_CANNOT_HAVE_EXPLICIT_LAYOUT=Generic-records can not have attribute LayoutKind.&Explicit
|
||||
ATTRIBUTE_CANNOT_BE_GENERIC=Attributes cannot be generic
|
||||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-methods can not be declared in generic type
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-methods can not be generic
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
|
||||
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'
|
||||
|
|
|
|||
|
|
@ -137,6 +137,8 @@ EXPRESSION_EXPECTED=Ожидалось выражение
|
|||
CLASS_ATTRIBUTE_NOT_ALLOWED_IN_CLASS_PREDEFINTIONS=Недопустимо определять атрибуты класса в его предописании
|
||||
GENERIC_RECORDS_CANNOT_HAVE_EXPLICIT_LAYOUT=Генерик-записи не могут иметь атрибут LayoutKind.&Explicit
|
||||
ATTRIBUTE_CANNOT_BE_GENERIC=Атрибуты не могут быть генерик-классами
|
||||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-методы нельзя описывать в генерик-классах
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-методы не могут быть генериками
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека
|
||||
ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}'
|
||||
|
|
|
|||
|
|
@ -135,6 +135,8 @@ EXPRESSION_EXPECTED=Ожидалось выражение
|
|||
CLASS_ATTRIBUTE_NOT_ALLOWED_IN_CLASS_PREDEFINTIONS=Недопустимо определять атрибуты класса в его предописании
|
||||
GENERIC_RECORDS_CANNOT_HAVE_EXPLICIT_LAYOUT=Генерик-записи не могут иметь атрибут LayoutKind.&Explicit
|
||||
ATTRIBUTE_CANNOT_BE_GENERIC=Атрибуты не могут быть генерик-классами
|
||||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-методы нельзя описывать в генерик-классах
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-методы не могут быть генериками
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку
|
||||
ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'
|
||||
|
|
|
|||
Loading…
Reference in a new issue