victal_check_mode_dec (SUB (p));
victal_check_mode_dec (NEXT (p));
}
+ else if (IS (p, PUBLIC_SYMBOL))
+ {
+ victal_check_mode_dec (NEXT (p));
+ }
else if (a68_is_one_of (p, MODE_SYMBOL, DEFINING_INDICANT, STOP)
|| a68_is_one_of (p, EQUALS_SYMBOL, COMMA_SYMBOL, STOP))
{
}
else
{
+ if (IS (p, PUBLIC_SYMBOL))
+ FORWARD (p);
+
if (IS (p, QUALIFIER))
FORWARD (p);
victal_check_identity_dec (SUB (p));
victal_check_identity_dec (NEXT (p));
}
- else if (a68_is_one_of (p, DEFINING_IDENTIFIER, EQUALS_SYMBOL, COMMA_SYMBOL, STOP))
+ else if (a68_is_one_of (p, PUBLIC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, COMMA_SYMBOL,
+ STOP))
victal_check_identity_dec (NEXT (p));
else if (IS (p, UNIT))
a68_victal_checker (SUB (p));
--- /dev/null
+{ Check that the victal pass handles publicized mode declarations
+ properly. }
+
+module Foo =
+def pub mode M1 = ref[]int;
+ pub mode M2 = []int; { dg-error "actual bounds expected" }
+ mode M3 = []real; { dg-error "actual bounds expected" }
+ pub []int v1; { dg-error "actual bounds expected" }
+ []int v2; { dg-error "actual bounds expected" }
+ pub []int a1 = ([]int v; v); { dg-error "actual bounds expected" }
+ []int a2 = ([]int v; v); { dg-error "actual bounds expected" }
+ pub op - = ([3]int a) int: skip; { dg-error "formal bounds expected" }
+ op + = ([3]int a) int: skip; { dg-error "formal bounds expected" }
+ skip
+fed