compiler/libec; ide/CodeEditor: Fixes to not resolve enums through bool conversion
authorJerome St-Louis <jerome@ecere.com>
Thu, 12 Jun 2014 14:40:33 +0000 (10:40 -0400)
committerJerome St-Louis <jerome@ecere.com>
Thu, 12 Jun 2014 14:40:33 +0000 (10:40 -0400)
compiler/libec/src/pass15.ec
ide/src/designer/CodeEditor.ec

index 38c4221..6e5f43f 100644 (file)
@@ -3586,7 +3586,8 @@ bool MatchWithEnums_NameSpace(NameSpace nameSpace, Expression sourceExp, Type de
             _class.symbol = FindClass(_class.fullName);
          type._class = _class.symbol;
 
-         if(MatchTypes(type, dest, &converts, null, null, true, false, false, false, false))
+         if(MatchTypes(type, dest, &converts, null, null, dest.kind != classType || !dest._class || strcmp(dest._class.string, "bool"),
+               false, false, false, false))
          {
             NamedLink64 value;
             Class enumClass = eSystem_FindClass(privateModule, "enum");
index 4625601..d344e86 100644 (file)
@@ -6090,7 +6090,7 @@ class CodeEditor : Window
       for(link = (BTNamedLink)nameSpace.classes.first; link; link = (BTNamedLink)((BTNode)link).next)
       {
          Class _class = link.data;
-         if(_class.type == enumClass && (dest.kind != classType || ((!dest._class || !dest._class.registered || (dest._class.registered != _class && strcmp(dest._class.registered.dataTypeString, "char *"))) && !dest.classObjectType)) &&
+         if(_class.type == enumClass && (dest.kind != classType || ((!dest._class || !dest._class.registered || (dest._class.registered != _class && strcmp(dest._class.registered.dataTypeString, "char *") && strcmp(dest._class.string, "bool"))) && !dest.classObjectType)) &&
             dest.kind != pointerType && dest.kind != ellipsisType)
          {
             OldList conversions { };