/[eiffelstudio]/branches/eth/eve/Src/Eiffel/API/evaluated_type/none_a.e
ViewVC logotype

Diff of /branches/eth/eve/Src/Eiffel/API/evaluated_type/none_a.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 83524 by jasonw, Fri Jun 11 08:12:14 2010 UTC revision 87220 by jasonw, Thu Sep 15 08:09:35 2011 UTC
# Line 9  class Line 9  class
9          NONE_A          NONE_A
10    
11  inherit  inherit
12          TYPE_A          ATTACHABLE_TYPE_A
13                  redefine                  redefine
14                          is_none, dump, c_type, same_as, is_full_named_type, generated_id,                          is_none, dump, c_type, same_as, is_full_named_type, generated_id,
15                          generate_gen_type_il                          generate_gen_type_il
# Line 67  feature -- Output Line 67  feature -- Output
67    
68          ext_append_to (st: TEXT_FORMATTER; c: CLASS_C)          ext_append_to (st: TEXT_FORMATTER; c: CLASS_C)
69                  do                  do
70                            if
71                                    not has_attached_mark and then not has_detachable_mark and then
72                                    not is_attached and then not is_implicitly_attached
73                            then
74                                            -- There is no explicit attachment mark, let's put an assumed one.
75                                    st.process_symbol_text ({SHARED_TEXT_ITEMS}.ti_l_bracket)
76                                    st.process_keyword_text ({SHARED_TEXT_ITEMS}.ti_detachable_keyword, Void)
77                                    st.process_symbol_text ({SHARED_TEXT_ITEMS}.ti_r_bracket)
78                                    st.add_space
79                            end
80                            ext_append_marks (st)
81                          st.add ({SHARED_TEXT_ITEMS}.ti_none_class)                          st.add ({SHARED_TEXT_ITEMS}.ti_none_class)
82                  end                  end
83    
# Line 103  feature {COMPILER_EXPORTER} Line 114  feature {COMPILER_EXPORTER}
114    
115          conform_to (a_context_class: CLASS_C; other: TYPE_A): BOOLEAN          conform_to (a_context_class: CLASS_C; other: TYPE_A): BOOLEAN
116                          -- Does Current conform to `other'?                          -- Does Current conform to `other'?
                 local  
                         l_type: TYPE_A  
117                  do                  do
118                                  -- If `other' is attached, then NONE does not conform to it.                                  -- Apply the same conformance rules as for a class type.
119                                  -- But it should not be `VOID_A' since VOID_A is only used as                          if
120                                  -- return type for procedure                                  attached {ATTACHABLE_TYPE_A} other.conformance_type as other_attachable_type and then
121                          l_type := other.conformance_type                                  not other_attachable_type.is_expanded and then
122                          Result := not l_type.is_expanded and not l_type.is_void and then not l_type.is_attached and then                                  (other_attachable_type.is_formal implies other_attachable_type.is_reference)
123                                  (l_type.is_formal implies l_type.is_reference)                          then
124                                    Result := True
125                                    if a_context_class.lace_class.is_void_safe_conformance then
126                                            Result :=
127                                                    is_attachable_to (other_attachable_type) and then
128                                                    (other_attachable_type.is_formal implies
129                                                            (other_attachable_type.has_detachable_mark or else is_implicitly_attached))
130                                    end
131                                    if Result then
132                                            Result := is_processor_attachable_to (other)
133                                    end
134                            end
135                  end                  end
136    
137  note  note
138          copyright:      "Copyright (c) 1984-2010, Eiffel Software"          copyright:      "Copyright (c) 1984-2011, Eiffel Software"
139          license:        "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"          license:        "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"
140          licensing_options:      "http://www.eiffel.com/licensing"          licensing_options:      "http://www.eiffel.com/licensing"
141          copying: "[          copying: "[

Legend:
Removed from v.83524  
changed lines
  Added in v.87220

  ViewVC Help
Powered by ViewVC 1.1.23