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

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

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

revision 80246 by manus, Mon Jun 22 17:52:58 2009 UTC revision 80247 by manus, Thu Aug 13 17:24:47 2009 UTC
# Line 64  feature -- Properties Line 64  feature -- Properties
64          has_associated_class_type (a_context_type: TYPE_A): BOOLEAN          has_associated_class_type (a_context_type: TYPE_A): BOOLEAN
65                          -- Does Current have an associated class?                          -- Does Current have an associated class?
66                  do                  do
67                          Result := conformance_type /= Void and then conformance_type.has_associated_class_type (a_context_type)                          if a_context_type /= Void then
68                                    Result := True
69                            else
70                                    Result := conformance_type /= Void and then conformance_type.has_associated_class_type (a_context_type)
71                            end
72                  end                  end
73    
74          is_class_valid: BOOLEAN          is_class_valid: BOOLEAN
# Line 161  feature -- Access Line 165  feature -- Access
165          associated_class_type (a_context_type: TYPE_A): CLASS_TYPE          associated_class_type (a_context_type: TYPE_A): CLASS_TYPE
166                          -- Associated class                          -- Associated class
167                  do                  do
168                          Result := conformance_type.associated_class_type (a_context_type)                          if a_context_type /= Void then
169                                    Result := a_context_type.associated_class_type (Void)
170                            else
171                                    Result := conformance_type.associated_class_type (a_context_type)
172                            end
173                  end                  end
174    
175          generics: ARRAY [TYPE_A]          generics: ARRAY [TYPE_A]
# Line 282  feature -- Generic conformance Line 290  feature -- Generic conformance
290                          if use_info then                          if use_info then
291                                  create_info.generate_cid (buffer, final_mode)                                  create_info.generate_cid (buffer, final_mode)
292                          else                          else
293                                  conformance_type.generate_cid (buffer, final_mode, use_info, a_context_type)                                  if a_context_type /= Void then
294                                            a_context_type.generate_cid (buffer, final_mode, use_info, a_context_type)
295                                    else
296                                            conformance_type.generate_cid (buffer, final_mode, use_info, a_context_type)
297                                    end
298                          end                          end
299                  end                  end
300    
# Line 292  feature -- Generic conformance Line 304  feature -- Generic conformance
304                          if use_info then                          if use_info then
305                                  create_info.generate_cid_array (buffer, final_mode, idx_cnt)                                  create_info.generate_cid_array (buffer, final_mode, idx_cnt)
306                          else                          else
307                                  conformance_type.generate_cid_array (buffer, final_mode, use_info, idx_cnt, a_context_type)                                  if a_context_type /= Void then
308                                            a_context_type.generate_cid_array (buffer, final_mode, use_info, idx_cnt, a_context_type)
309                                    else
310                                            conformance_type.generate_cid_array (buffer, final_mode, use_info, idx_cnt, a_context_type)
311                                    end
312                          end                          end
313                  end                  end
314    
315          generate_cid_init (buffer: GENERATION_BUFFER; final_mode, use_info: BOOLEAN; idx_cnt: COUNTER; a_level: NATURAL)          generate_cid_init (buffer: GENERATION_BUFFER; final_mode, use_info: BOOLEAN; idx_cnt: COUNTER; a_context_type: TYPE_A; a_level: NATURAL)
316                  do                  do
317                          generate_cid_prefix (Void, idx_cnt)                          generate_cid_prefix (Void, idx_cnt)
318                          if use_info then                          if use_info then
319                                  create_info.generate_cid_init (buffer, final_mode, idx_cnt, a_level)                                  create_info.generate_cid_init (buffer, final_mode, idx_cnt, a_level)
320                          else                          else
321                                  conformance_type.generate_cid_init (buffer, final_mode, use_info, idx_cnt, a_level)                                  if a_context_type /= Void then
322                                            a_context_type.generate_cid_init (buffer, final_mode, use_info, idx_cnt, a_context_type, a_level)
323                                    else
324                                            conformance_type.generate_cid_init (buffer, final_mode, use_info, idx_cnt, a_context_type, a_level)
325                                    end
326                          end                          end
327                  end                  end
328    
# Line 312  feature -- Generic conformance Line 332  feature -- Generic conformance
332                          if use_info then                          if use_info then
333                                  create_info.make_type_byte_code (ba)                                  create_info.make_type_byte_code (ba)
334                          else                          else
335                                  conformance_type.make_type_byte_code (ba, use_info, a_context_type)                                  if a_context_type /= Void then
336                                            a_context_type.make_type_byte_code (ba, use_info, a_context_type)
337                                    else
338                                            conformance_type.make_type_byte_code (ba, use_info, a_context_type)
339                                    end
340                          end                          end
341                  end                  end
342    
# Line 343  feature {TYPE_A} -- Helpers Line 367  feature {TYPE_A} -- Helpers
367          internal_same_generic_derivation_as (current_type, other: TYPE_A; a_level: INTEGER_32): BOOLEAN          internal_same_generic_derivation_as (current_type, other: TYPE_A; a_level: INTEGER_32): BOOLEAN
368                  do                  do
369                                  -- We keep the same level since we are merely forwarding the call.                                  -- We keep the same level since we are merely forwarding the call.
370                          Result := conformance_type.internal_same_generic_derivation_as (current_type, other, a_level)                                  -- And because of `like Current', the underlying type is actually `current_type' if
371                                    -- provided otherwise `conformance_type'.
372                            if current_type /= Void then
373                                    Result := current_type.internal_same_generic_derivation_as (current_type, other, a_level)
374                            else
375                                    Result := conformance_type.internal_same_generic_derivation_as (current_type, other, a_level)
376                            end
377                  end                  end
378    
379  feature {COMPILER_EXPORTER} -- Modification  feature {COMPILER_EXPORTER} -- Modification

Legend:
Removed from v.80246  
changed lines
  Added in v.80247

  ViewVC Help
Powered by ViewVC 1.1.23