1.1 --- a/templates/ops.c Thu Nov 24 00:29:06 2016 +0100
1.2 +++ b/templates/ops.c Thu Nov 24 00:58:36 2016 +0100
1.3 @@ -118,10 +118,14 @@
1.4
1.5 __attr __test_context(__ref context, __attr attr)
1.6 {
1.7 + /* Preserve any existing instance context. */
1.8 +
1.9 if (__is_instance(attr.context))
1.10 return attr;
1.11 - if (__test_common_instance(context, __TYPEPOS(attr.context), __TYPECODE(attr.context)))
1.12 + if (__is_instance(context) && __test_common_instance(context, __TYPEPOS(attr.context), __TYPECODE(attr.context)))
1.13 return __replace_context(context, attr);
1.14 + if (!__is_instance(context) && __test_common_type(context, __TYPEPOS(attr.context), __TYPECODE(attr.context)))
1.15 + return __update_context(context, attr);
1.16
1.17 /* NOTE: An error may be more appropriate. */
1.18