Files
carbon-lang/explorer/testdata/assoc_const/rewrite_interface_params.carbon
T
Jon Ross-Perkins 129f31710d Disable autoupdate in explorer tests. (#4023)
Just replacing AUTOUPDATE with NOAUTOUPDATE, and removing the autoupdate
script. Tests will still run, but autoupdate may need to be fixed if
significant changes are made.

I noticed this while trying to autoupdate for #4007 (because we verify
that tests have been autoupdated). Autoupdate was likely broken by
#3449.

Trying to run with no changes gives:

```
CHECK failure at testing/file_test/file_test_base.cpp:801: !absl::GetFlag(FLAGS_test_targets_file).empty(): Missing --test_targets_file.
```

This is because the `file_test` rule creates a file with test inputs
that it runs with, which the prebuilt binary doesn't provide.

A local kludge to create a `file_test` target not using prebuilt_binary
showed another error:

```
: CommandLine Error: Option ': CommandLine Error: Option 'parser_debug' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
trace_phase' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
```

I'm thinking here that the explorer code hasn't been in enough use, and
we're seeing some rot as a consequence. Rather than trying to maintain
it, I'm suggesting to go with NOAUTOUPDATE.
2024-06-04 16:44:36 +00:00

46 lines
1.4 KiB
Plaintext

// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// NOAUTOUPDATE
package ExplorerTest api;
interface HasTypes {
let A:! type;
let B:! type;
let C:! type;
let D:! type;
let E:! type;
let F:! type;
}
interface HasParams(A:! type, B:! type, C:! type, D:! type) {
let V:! HasTypes;
}
// Here we discover that there is a rewrite for `HasParams(...).V` only after
// substitution converts each one to `HasParam(X, X, X, X).V`.
fn F[X:! (HasTypes & HasParams(.Self, .Self, .Self, .Self)) where
.Self impls HasParams(.A, .A, .A, .A) and
.Self impls HasParams(.B, .B, .B, .B) and
.Self impls HasParams(.C, .C, .C, .C) and
.Self impls HasParams(.D, .D, .D, .D) and
.Self impls HasParams(.E, .E, .E, .E) and
.F = .Self.(HasParams(.E, .E, .E, .E).V).A and
.E = .Self.(HasParams(.D, .D, .D, .D).V).A and
.D = .Self.(HasParams(.C, .C, .C, .C).V).A and
.C = .Self.(HasParams(.B, .B, .B, .B).V).A and
.B = .Self.(HasParams(.A, .A, .A, .A).V).A and
.A = .Self and .V = .Self](x: X) -> X.F { return x; }
impl i32 as HasTypes
where .A = .B and .B = .C and .C = .D and .D = .E and .E = .F and .F = i32 {}
impl i32 as HasParams(i32, i32, i32, i32) where .V = i32 {}
fn Main() -> i32 {
return F(0);
}
// CHECK:STDOUT: result: 0