This happens with the C++ compiler only.

Tested on x86_64-suse-linux, applied on the mainline.


2016-11-13  Eric Botcazou  <ebotca...@adacore.com>

c-family/
        * c-ada-spec.c (print_ada_declaration): For typedef declarations, look
        for nested types only if the type is a record or union and dump SLOC.


2016-11-13  Eric Botcazou  <ebotca...@adacore.com>

        * c-c++-common/dump-ada-spec-6.c: New test.

-- 
Eric Botcazou
/* { dg-do compile } */
/* { dg-options "-fdump-ada-spec" } */

typedef enum {
    Zero
} MyEnum;

typedef MyEnum SomethingElse; 

/* { dg-final { cleanup-ada-spec } } */
Index: c-ada-spec.c
===================================================================
--- c-ada-spec.c	(revision 242334)
+++ c-ada-spec.c	(working copy)
@@ -2813,7 +2813,7 @@ print_ada_declaration (pretty_printer *b
 		}
 	      else
 		{
-		  if (!TREE_VISITED (stub)
+		  if (RECORD_OR_UNION_TYPE_P (typ)
 		      && DECL_SOURCE_FILE (stub) == source_file_base)
 		    dump_nested_types (buffer, stub, stub, true, spc);
 
@@ -2821,7 +2821,8 @@ print_ada_declaration (pretty_printer *b
 		  dump_generic_ada_node (buffer, t, type, spc, false, true);
 		  pp_string (buffer, " is ");
 		  dump_generic_ada_node (buffer, typ, type, spc, false, true);
-		  pp_semicolon (buffer);
+		  pp_string (buffer, ";  -- ");
+		  dump_sloc (buffer, t);
 		}
 
 	      TREE_VISITED (t) = 1;

Reply via email to