X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Foberon-type-compat.c;h=ab5419d7d444c39fc645df0c04704756cb0678fd;hp=3da62edc2bb5b059b7ee20b90f20c238400de495;hb=HEAD;hpb=ba1a55241f3841d1254317d76d45322c85fb687b diff --git a/src/oberon-type-compat.c b/src/oberon-type-compat.c index 3da62ed..ab5419d 100644 --- a/src/oberon-type-compat.c +++ b/src/oberon-type-compat.c @@ -7,11 +7,9 @@ #include #include -#include "../include/oberon.h" - -#include "oberon-common.h" #include "oberon-internals.h" #include "oberon-type-compat.h" +#include "oberon-common.h" bool oberon_is_array_type(oberon_type_t * t) @@ -302,7 +300,7 @@ oberon_is_assignment_compatible_expressions(oberon_expr_t * e, oberon_type_t * T /* совпадают с параметрами Tv. */ /* Доп: Tv - символ, е - строковая константа из одного символа */ - /* SYSTEM: переменным типа BYTE можно присваивать значения переменных типа CHAR или SHORTINT. */ + /* SYSTEM: Переменным типа BYTE можно присваивать значения переменных типа CHAR или SHORTINT. */ /* SYSTEM: Переменным типа PTR могут быть присвоены значения переменных-указателей любого типа. */ oberon_type_t * Te = e -> result; @@ -422,8 +420,8 @@ oberon_is_compatible_bin_expr_types(int token, oberon_type_t * a, oberon_type_t { return true; } - else if((oberon_is_nil_type(a) || oberon_is_pointer_to_record(a) || oberon_is_procedure_type(a)) - && (oberon_is_nil_type(b) || oberon_is_pointer_to_record(b) || oberon_is_procedure_type(b))) + else if((oberon_is_nil_type(a) || oberon_is_pointer_type(a) || oberon_is_procedure_type(a)) + && (oberon_is_nil_type(b) || oberon_is_pointer_type(b) || oberon_is_procedure_type(b))) { return true; } @@ -476,7 +474,8 @@ oberon_is_compatible_var_param(oberon_type_t * Tf, oberon_type_t * Ta) /* фактический параметр может быть указателем любого типа. */ return oberon_is_some_types(Tf, Ta) - || (oberon_is_record_type(Tf) && oberon_extension_of(Ta, Tf)) + || (oberon_is_record_type(Tf) && oberon_extension_of(Tf, Ta)) + || (oberon_is_system_byte_type(Tf) && (oberon_is_char_type(Ta) || oberon_is_byte_type(Ta))) || (oberon_is_array_of_system_byte_type(Tf)) || (oberon_is_system_ptr_type(Tf)); }