PR# 18090 Precondition violated Tag: valid_group_for_class in {ES_PROPERTIES_TOOL_PANEL}.set_stone in EiffelSt

Problem Report Summary
Submitter: alexk_es
Category: EiffelStudio
Priority: Medium
Date: 2012/01/26
Class: Bug
Severity: Serious
Number: 18090
Release: 7.1.0.0
Confidential: No
Status: Analyzed
Responsible:
Environment: EiffelStudio 7.1.0.0 GPL Edition - windows
Synopsis: Precondition violated Tag: valid_group_for_class in {ES_PROPERTIES_TOOL_PANEL}.set_stone in EiffelSt

Description
In a test SCOOP project I tried to open ISE_SCOOP_MANAGER in an editor. This is the result.

Project loaded: True
Project compiled: True
Is compiling: False
Last known class processed: TEST

******************************** Thread exception *****************************
In thread           Root thread            0x0 (thread id)
*******************************************************************************
-------------------------------------------------------------------------------
Class / Object      Routine                Nature of exception           Effect
-------------------------------------------------------------------------------
CONF_LIBRARY        changeable_class_options @2
                                           valid_group_for_class:
<00000000118B4B3C>  (From CONF_GROUP)      Precondition violated.        Fail
-------------------------------------------------------------------------------
ES_PROPERTIES_TOOL_PANEL
                    set_stone @33          
<0000000016796F1C>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_STONE_CHECKER    check_new_class_stone @7
<000000000F9ED914>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_STONE_CHECKER    handle_all_class_stones @7
<000000000F9ED914>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_STONE_CHECKER    handle_break_error_ace_external_file_stone @18
<000000000F9ED914>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_STONE_CHECKER    set_stone_after_check @4
<000000000F9ED914>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_DEVELOPMENT_WINDOW
                    set_stone_after_check @2
<00000000114DE888>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_STONE_FIRST_CHECKER
                    set_stone_after_first_check @49
<000000000F9E4434>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_DEVELOPMENT_WINDOW
                    set_stone_after_first_check @3
<00000000114DE888>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_DEVELOPMENT_WINDOW
                    set_stone @10          
<00000000114DE888>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_DEVELOPMENT_WINDOW
                    advanced_set_stone @1  
<00000000114DE888>  (From EB_HISTORY_OWNER)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  process_class_feature @4
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  extract_feature_from_user_entry @20
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  process_class @17                                   
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  process_user_entry @32                              
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  execute_with_class @2                               
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_ADDRESS_MANAGER  class_key_down @5                                   
<00000000114FB8D4>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           fast_call                                           
<00000000114F5ACC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           call @5                                             
<00000000114F5ACC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_KEY_ACTION_SEQUENCE
                    call @22               
<00000000114F5A60>  (From ACTION_SEQUENCE) Routine failure.              Fail
-------------------------------------------------------------------------------
EV_KEY_ACTION_SEQUENCE
                    call @3                
<00000000114F5A60>  (From EV_LITE_ACTION_SEQUENCE)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_COMBO_BOX_IMP    process_standard_key_press @20
<00000000114F5D3C>  (From EV_WIDGET_IMP)   Routine failure.              Fail
-------------------------------------------------------------------------------
EV_COMBO_BOX_IMP    on_key_down @1                                      
<00000000114F5D3C>  (From EV_WIDGET_IMP)   Routine failure.              Fail
-------------------------------------------------------------------------------
EV_COMBO_BOX_IMP    on_key_down @2                                      
<00000000114F5D3C>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_INTERNAL_COMBO_FIELD_IMP
                    on_key_down @4         
<00000000114F52BC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_INTERNAL_COMBO_FIELD_IMP
                    process_message @25    
<00000000114F52BC>  (From WEL_WINDOW)      Routine failure.              Fail
-------------------------------------------------------------------------------
WEL_DISPATCHER      window_procedure @10                                
<00000000115FD61C>  (From WEL_ABSTRACT_DISPATCHER)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
WEL_MSG             cwin_dispatch_message                               
<00000000115A20B0>                         Routine failure.              Fail
-------------------------------------------------------------------------------
WEL_MSG             dispatch @1                                         
<00000000115A20B0>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  process_message @11                                 
<00000000115A1798>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  process_underlying_toolkit_event_queue @6
<00000000115A1798>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  process_event_queue @2                              
<00000000115A1798>  (From EV_APPLICATION_I)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  launch @3                                           
<00000000115A1798>  (From EV_APPLICATION_I)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION      launch @4                                           
<00000000115A1780>                         Routine failure.              Fail
-------------------------------------------------------------------------------
ES_GRAPHIC          make @4                                             
<00000000115A1720>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_KERNEL           make @4                                             
<00000000114DE6FC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_KERNEL           root's creation                                     
<00000000114DE6FC>                         Routine failure.              Exit
-------------------------------------------------------------------------------
To Reproduce

										
Problem Report Interactions
From:manus_eiffel    Date:2012/01/27    Status: Analyzed    Download   
This is indeed a problem. The issue at play is that whenever you try to open the editor on a class that belongs to a `hidden' cluster it is not part of {CONF_LIBRARY}.classes (because hidden) even though {CONF_LIBRARY}.classes_set is True.

I think that we should not completely hide the class from `classes' but possibly let them in. However, we could change the callers of `classes' to verify that the class is not hidden from them. It seems to me (naively maybe) that we only need to change UNIVERSE_I.class_named to get the expected behavior without breaking the rest.