tools/ocaml: abi-check: Check properly.

Fix a broken regexp which would mention `$/' when it ought to have
mentioned `$'.  The result would be that it would match lines like
    type some_ocaml_type = Thing | Other_Thing
but ignore everything but the type name, giving wrong answers.

Check that we check mentioned types.  Otherwise if we fail to spot
some suitable thing in the ocaml, we would just omit checking this
type !

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Andrew Cooper <Andrew.Cooper3@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
This commit is contained in:
Ian Jackson committed 2019-09-10 14:44:33 +01:00
1 parent 278b237d8d
commit 8a0aa3878d
1 file changed
+8 -1
+8 -1
View File
@@ -47,6 +47,7 @@ while (<C_FILE>) {
} elsif ($cline == 1 && @vals == 1) {
my ($otype) = @vals;
die "reference to undefined OType $otype" unless $enums{$otype};
$cline = -1;
} elsif ($cline == 1 && @vals == 3) {
$ei->{$_} = shift @vals foreach qw(OType OPrefix Mangle);
} elsif ($cline == 2 && @vals == 3) {
@@ -70,7 +71,7 @@ $ei = undef;
my $bitnum = 0;
while (<OCAML_FILE>) {
if (!$ei) {
if (m{^type \s+ (\w+) \s* \= \s* $/}x && $enums{$1}) {
if (m{^type \s+ (\w+) \s* \= \s* $}x && $enums{$1}) {
print "// found ocaml type $1 at $o:$.\n" or die $!;
$ei = $enums{$1};
$cval = '';
@@ -96,6 +97,7 @@ while (<OCAML_FILE>) {
} else {
die Dumper($ei)." ?";
}
$ei->{Checked} = 1;
$ei = undef;
} elsif (!m{\S}) {
} else {
@@ -104,4 +106,9 @@ while (<OCAML_FILE>) {
}
}
foreach $ei (values %enums) {
next if $ei->{Checked};
die "did not find ocaml type definition for $ei->{OType} in $o";
}
close STDOUT or die $!;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.