[vala/wip/limited-generics: 2/2] codegen: Don't apply strict generic-type rules on simple/limited generics
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/limited-generics: 2/2] codegen: Don't apply strict generic-type rules on simple/limited generics
- Date: Sun, 10 Mar 2019 21:33:09 +0000 (UTC)
commit a9b1025274d82edbd2e564196cfa4ee6d2a5b0ad
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Sun Mar 10 22:16:45 2019 +0100
codegen: Don't apply strict generic-type rules on simple/limited generics
codegen/valaccodebasemodule.vala | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index d9b81516a..3acb1b460 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -4325,8 +4325,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
}
bool is_limited_generic_type (GenericType type) {
- var cl = type.type_parameter.parent_symbol as Class;
- var st = type.type_parameter.parent_symbol as Struct;
+ return has_limited_generics (type.type_parameter.parent_symbol);
+ }
+
+ bool has_limited_generics (Symbol sym) {
+ unowned Class? cl = sym as Class;
+ unowned Struct? st = sym as Struct;
if ((cl != null && cl.is_compact) || st != null) {
// compact classes and structs only
// have very limited generics support
@@ -4678,6 +4682,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
|| is_signed_integer_type_argument (type_arg)
|| is_unsigned_integer_type_argument (type_arg)) {
// no error
+ } else if (has_limited_generics (((DataType) type_arg.parent_node).data_type)) {
+ // no error
} else if (type_arg is DelegateType) {
var delegate_type = (DelegateType) type_arg;
if (delegate_type.delegate_symbol.has_target) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]