This commit is contained in:
Бондарев Иван 2018-09-04 21:02:18 +02:00
parent 7bfd14383a
commit 1efb46a659
6 changed files with 33 additions and 0 deletions

View 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.

View 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.

View file

@ -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))

View file

@ -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}'

View file

@ -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}'

View file

@ -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}'