@@ -666,6 +666,16 @@ cp_lexer_new_main (void)
+ lexer->buffer->length ()
- 1;
+ if (lexer->buffer->length () != 1)
+ {
+ /* Set the EOF token's location to be the just after the previous
+ token's range. That way 'at-eof' diagnostics point at something
+ meaninful. */
+ auto range = get_range_from_loc (line_table, tok[-1].location);
+ tok[0].location
+ = linemap_position_for_loc_and_offset (line_table, range.m_finish, 1);
+ }
+
if (filter)
module_token_cdtor (parse_in, filter);
@@ -4,5 +4,5 @@ void
foo ()
{
#pragma acc routine /* { dg-error ".#pragma acc routine. must be at file scope" } */
-// { dg-error "expected" "end" { target c } .-1 }
-// { dg-error "-:expected" "end" { target c++ } .+1 }
+// { dg-error "expected" "end" { target *-*-* } .-1 }
+
@@ -5,5 +5,4 @@ foo ()
{
#pragma omp sections
#pragma omp section /* { dg-error "'#pragma omp section' may only be used in '#pragma omp sections' construct|not allowed" } */
-// { dg-error "expected" "end" { target c } .-1 }
-// { dg-error "-:expected" "end" { target c++ } .+1 }
+// { dg-error "expected" "end" { target *-*-* } .-1 }
@@ -3,5 +3,4 @@
// { dg-options "-std=c++0x" { target c++ } }
const void *s0 = R"ouch()ouCh"; // { dg-error "unterminated raw string" "unterminated" }
-// { dg-error "at end of input" "end" { target c } .-1 }
-// { dg-error "-:at end of input" "end" { target c++ } .+1 }
+// { dg-error "at end of input" "end" { target *-*-* } .-1 }
@@ -4,5 +4,4 @@
template<typename T>
class C{
T t;
- decltype(t)::a:: // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ decltype(t)::a:: // { dg-error "expected" }
@@ -2,4 +2,3 @@
// { dg-do compile { target c++11 } }
namespace alignas() N {} // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -5,4 +5,3 @@ template <typename> struct A {
template <typename... _Args>
using __has_construct typename __construct_helper<_Args...>::type; // { dg-error "expected" }
} struct : A<int> { // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -2,4 +2,3 @@
// { dg-do compile { target c++11 } }
alignas (alignas double // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -24,5 +24,4 @@ int main()
{
foo<ns::bar> f;
adl::swap(f, f) // { dg-error "expected ';'" }
-}
-// { dg-error "-:expected '.'" "expected end of namespace" { target *-*-* } .+1 }
+} // { dg-error "2:expected" }
@@ -17,4 +17,4 @@ struct traverse {
}
auto &traverse = constant < functors :: traverse > ;
operator()()->decltype(traverse(0, 0))// { dg-error "no match" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "39:expected" "" { target *-*-* } .-1 }
@@ -1,4 +1,4 @@
// { dg-do compile { target c++14 } }
template <typename> struct bar foo; template <> struct foo<>: // { dg-error "class template|redeclared" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "62:expected" "" { target *-*-* } .-1 }
@@ -3,4 +3,3 @@
template <typename> struct A;
template <typename> struct B : A < B { , // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
new file mode 100644
@@ -0,0 +1,4 @@
+// PR 96045 EOF location
+
+template <class> class A {};
+struct A <int> // { dg-error "15:" }
new file mode 100644
@@ -0,0 +1,6 @@
+// PR 96045 EOF location
+
+template <class> class A {};
+struct A <int> // { dg-error "15:" }
+/* A comment */
+
new file mode 100644
@@ -0,0 +1,6 @@
+// PR 96045 EOF location
+
+#define BORKED <int> // { dg-error "20:" }
+
+template <class> class A {};
+struct A BORKED // { dg-message "10: in expansion of" }
@@ -10,4 +10,4 @@ void bar (void);
void test (void);
// { message "12: to match this '.'" "" { target *-*-* } open_extern_c }
-/* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+/* { dg-error "18:expected '.' at end of input" "" { target *-*-* } .-2 } */
@@ -1,4 +1,3 @@
void test (void)
{ /* { dg-message "1: to match this '.'" } */
- int filler;
- /* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+ int filler; /* { dg-error "14:expected '.' at end of input" } */
@@ -1,3 +1,2 @@
namespace unclosed { /* { dg-message "20: to match this '.'" } */
-int filler;
-/* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+int filler; /* { dg-error "12:expected '.' at end of input" } */
@@ -1,3 +1,2 @@
struct unclosed { /* { dg-message "17: to match this '.'" } */
- int dummy;
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
+ int dummy; // { dg-error "13:expected" }
@@ -1,4 +1,4 @@
// { dg-options "-fpermissive -w" }
-template<int b> __attribute__ a([] { class c, __attribute__(vector_size(operator+()))) d; // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+template<int b> __attribute__ a([] { class c, __attribute__(vector_size(operator+()))) d; // { dg-error "before" }
+// { dg-error "90:expected" "" { target *-*-* } .-1 }
@@ -3,5 +3,4 @@
class a b; // { dg-error "aggregate" }
void c() {
switch () // { dg-error "expected" }
- case b // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
+ case b // { dg-error "9:expected" }
@@ -1,4 +1,3 @@
// PR c++/93684 - ICE-on-invalid with broken attribute.
[[a:: // { dg-error "expected" }
- // { dg-error "-:expected" "" { target c++11 } .+1 }
@@ -3,5 +3,4 @@
void foo()
{
- if (struct A{}// { dg-error "types may not be defined|expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ if (struct A{}// { dg-error "" }
@@ -9,4 +9,3 @@ class
{
typename::
; // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -4,4 +4,4 @@
// PR 18095: ICE
// Origin: Volker Reichelt <reichelt@gcc.gnu.org>
-struct A // { dg-error "-:expected" "" { target *-*-* } .+1 }
+struct A // { dg-error "9:expected" }
@@ -2,4 +2,4 @@
void Dispatcher()
(__builtin_offsetof (ArgsType, largeMsgLen)) // { dg-error "initialize" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "54:expected" "" { target *-*-* } .-1 }
@@ -4,4 +4,4 @@
void foo()
{
namespace N { /* { dg-error "is not allowed" } */
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "16:expected" "" { target *-*-* } .-1 }
@@ -4,4 +4,4 @@
struct a {};
class foo : public a, a // { dg-error "duplicate base" }
-{ // { dg-error "-:at end of input" "" { target *-*-* } .+1 }
+{ // { dg-error "2:at end of input" }
@@ -1,4 +1,4 @@
// PR c++/39053
void foo() = // { dg-error "initialized" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "13:expected" "" { target *-*-* } .-1 }
@@ -1,4 +1,4 @@
// PR c++/53003
struct A{ void a{} return b // { dg-error "16:function definition" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "28:expected" "" { target *-*-* } .-1 }
@@ -5,4 +5,3 @@
struct pair { constexpr pair (const) : }; // { dg-error "" }
template <0> make_pair () {} // { dg-error "" }
pair prefix[] = { 0, make_pair } // { dg-error "" }
-// { dg-error "-:expected" "" { target c++11 } .+1 }
@@ -4,4 +4,4 @@
class x0;
template <x1> x2() { // { dg-error "declared|type" }
x0 x3 = x3. // { dg-error "incomplete type" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "12:expected" "" { target *-*-* } .-1 }
@@ -20,4 +20,4 @@ struct X
// }
}; // { dg-error "1:expected primary-expression before '.' token" "primary" }
-// { dg-error "-:expected" "at end of input" { target *-*-* } .+1 }
+// { dg-error "3:expected" "at end of input" { target *-*-* } .-1 }
@@ -4,4 +4,3 @@ template <0> int __copy_streambufs_eof; // { dg-error "" }
class {
// { dg-error "forbids" "" { target *-*-* } .+1 }
friend __copy_streambufs_eof <> ( // { dg-error "" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -3,4 +3,4 @@
// { dg-options "-w" }
int foo ( foo += *[ // { dg-error "expected" }
-// { dg-error "-:invalid|expected" "" { target *-*-* } .+1 }
+// { dg-error "20:invalid|expected" "" { target *-*-* } .-1 }
@@ -3,5 +3,5 @@
// { dg-do compile }
struct {
- a(void = 0; a(0), a(0) // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ a(void = 0; a(0), a(0) // { dg-error "invalid|cannot|before|forbid|member" }
+// { dg-error "25:end of input" "" { target *-*-* } .-1 }
@@ -8,4 +8,4 @@ main (void)
z = __complex__ (1.90000007326203904e+19, 0.0); // { dg-error "expected primary-expression before '__complex__'" "primary-expression" }
z = __complex__ (1.0e+0, 0.0) / z; // { dg-error "expected primary-expression before '__complex__'" "primaty-expression" }
- // { dg-error "-:at end of input" "end" { target *-*-* } .+1 }
+ // { dg-error "37:at end of input" "end" { target *-*-* } .-1 }
@@ -8,4 +8,4 @@ main (void)
z = _Complex (1.90000007326203904e+19, 0.0); // { dg-error "expected primary-expression before '_Complex'" "primary-expression" }
z = _Complex (1.0e+0, 0.0) / z; // { dg-error "expected primary-expression before '_Complex'" "primary-expression" }
- // { dg-error "-:at end of input" "end" { target *-*-* } .+1 }
+ // { dg-error "34:at end of input" "end" { target *-*-* } .-1 }
@@ -6,4 +6,3 @@ class A {
A _M_ios_locale ios_base(ios_base &) template <_Traits> class basic_ios { // { dg-error "" }
basic_ios basic_ios = operator= // { dg-error "" }
// { dg-prune-output "file ends in default argument" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -1,5 +1,3 @@
// { dg-additional-options -fopenmp }
// { dg-require-effective-target fopenmp }
-#pragma omp declare simd // { dg-error "not immediately followed by" }
-
-// { dg-error "-:expected unqualified-id" "" { target *-*-* } .+1 }
+#pragma omp declare simd // { dg-error "" }
@@ -5,4 +5,3 @@ template
<
class
{ // { dg-error "" }
-// { dg-error "-:" "" { target *-*-* } .+1 }
@@ -2,4 +2,3 @@
// { dg-do compile }
template < int > struct S { S < // { dg-error "" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -1,4 +1,3 @@
// PR c++/56534
template < struct template rebind < > // { dg-error "expected|must follow" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -5,4 +5,3 @@ extern "C" {
struct ___is_pod {
enum {
__value = (sizeof(__gnu_internal::__test_type<_Tp>(0)))}; // { dg-error "expected|declared" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -5,5 +5,4 @@ struct A ;
template < typename >
struct B ;
template < typename T , A < B < T > {} // { dg-error "parse error|non-type|initializer" }
-
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "39:expected" "" { target *-*-* } .-1 }
@@ -7,4 +7,3 @@ template < typename > struct T
template < bool > struct T < S > // { dg-error "" }
{
void f () { // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
@@ -2,4 +2,4 @@
template <int()> struct a;
template <int(b)> a < b // { dg-error "int" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "expected" "" { target *-*-* } .-1 }
@@ -6,5 +6,4 @@ namespace bar
struct foo
{
foo();
-};
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+}; // { dg-error "3:expected" }
@@ -100,7 +100,7 @@ endif
CXXOPTS += $(filter-out -DHAVE_CONFIG_H,@DEFS@) -include config.h
# Linker options
-LDFLAGS := -L. @LDFLAGS@
+LDFLAGS := @LDFLAGS@
LIBS := @LIBS@
# Per-source & per-directory compile flags (warning: recursive)
deleted file mode 100644
@@ -1,30 +0,0 @@
-
-// Test client connection handshake
-// RUN: <<HELLO 1 TESTING
-// RUN: $subdir$stem | ezio -p OUT $test |& ezio -p ERR $test
-// RUN-END:
-
-// OUT-NEXT:^HELLO {:[0-9]+} TEST IDENT$
-// OUT-NEXT:$EOF
-
-// ERR-NEXT:Code:{:[0-9]+}$
-// ERR-NEXT:Version:1$
-// ERR-NEXT:$EOF
-
-
-// Cody
-#include "cody.hh"
-// C++
-#include <iostream>
-
-using namespace Cody;
-
-int main (int, char *[])
-{
- Client client (0, 1);
-
- auto token = client.Connect ("TEST", "IDENT");
-
- std::cerr << "Code:" << token.GetCode () << '\n';
- std::cerr << "Version:" << token.GetInteger () << '\n';
-}
deleted file mode 100644
@@ -1,73 +0,0 @@
-// CODYlib -*- mode:c++ -*-
-// Copyright (C) 2020 Nathan Sidwell, nathan@acm.org
-// License: Apache v2.0
-
-// RUN: <<bob 'frob dob''\nF\_b\20\61\\'
-// RUN: $subdir$stem |& ezio $test
-// CHECK-NEXT: ^line:0 word:0 'bob'
-// CHECK-NEXT: ^line:0 word:1 'frob dob$
-// CHECK-OPTION: matchSpace
-// CHECK-NEXT: ^F b a\'$
-// CHECK-NEXT: $EOF
-
-/* RUN: <<line-1 word:1 ;
- RUN: <<'line 2' ;
- RUN: <<
-*/
-// RUN: $subdir$stem |& ezio -p CHECK2 $test
-// CHECK2-NEXT: line:0 word:0 'line-1'
-// CHECK2-NEXT: line:0 word:1 'word:1'
-// CHECK2-NEXT: line:1 word:0 'line 2'
-// CHECK2-NEXT: error:No
-// CHECK2-NEXT: $EOF
-
-// RUN: <<'
-// RUN: $subdir$stem |& ezio -p CHECK3 $test
-// CHECK3-NEXT: error:Invalid argument
-// CHECK3-NEXT: line:0 word:0 '''
-// CHECK3-NEXT: $EOF
-
-/* RUN: << ;
- RUN: <<'\g'
-*/
-// RUN: $subdir$stem |& ezio -p CHECK4 $test
-// CHECK4-NEXT: error:No
-// CHECK4-NEXT: error:Invalid argument
-// CHECK4-NEXT: line:1 word:0 ''\g''
-// CHECK4-NEXT: $EOF
-
-// RUN-END:
-
-// Cody
-#include "cody.hh"
-// C++
-#include <iostream>
-// C
-#include <cstring>
-
-using namespace Cody;
-
-int main (int, char *[])
-{
- Detail::MessageBuffer reader;
-
- reader.PrepareToRead ();
- while (int e = reader.Read (0))
- if (e != EAGAIN && e != EINTR)
- break;
-
- std::vector<std::string> words;
- for (unsigned line = 0; !reader.IsAtEnd (); line++)
- {
- if (int e = reader.Lex (words))
- std::cerr << "error:" << strerror (e) << '\n';
- for (unsigned ix = 0; ix != words.size (); ix++)
- {
- auto &word = words[ix];
-
- std::cerr << "line:" << line << " word:" << ix
- << " '" << word << "'\n";
- }
- }
- return 0;
-}
deleted file mode 100644
@@ -1,48 +0,0 @@
-// CODYlib -*- mode:c++ -*-
-// Copyright (C) 2020 Nathan Sidwell, nathan@acm.org
-// License: Apache v2.0
-
-// Test message encoding, both string quoting and continuation lines
-
-// RUN: $subdir$stem |& ezio $test
-// RUN-END:
-// The ¯ is utf8-encoded as c2 af
-// CHECK-NEXT: ^bob 'frob dob''\n¯\\'$
-// CHECK-NEXT: ^2 ;$
-// CHECK-NEXT: ^3$
-// CHECK-NEXT: $EOF
-
-// Cody
-#include "cody.hh"
-
-using namespace Cody;
-
-int main (int, char *[])
-{
- Detail::MessageBuffer writer;
-
- writer.BeginLine ();
- writer.AppendWord ("bob");
- writer.AppendWord ("frob dob", true);
- writer.Append ("\n\xc2\xaf\\", true);
- writer.EndLine ();
-
- writer.PrepareToWrite ();
- while (int err = writer.Write (2))
- if (err != EAGAIN && err != EINTR)
- break;
-
- writer.BeginLine ();
- writer.Append ("2", true);
- writer.EndLine ();
- writer.BeginLine ();
- writer.Append ("3", true);
- writer.EndLine ();
-
- writer.PrepareToWrite ();
- while (int err = writer.Write (2))
- if (err != EAGAIN && err != EINTR)
- break;
-
- return 0;
-}
deleted file mode 100644
@@ -1,97 +0,0 @@
-
-// Test client message round tripping
-/*
- RUN: <<HELLO 1 TESTING ;
- RUN: <<PATHNAME REPO ;
- RUN: <<PATHNAME biz/bar ;
- RUN: <<PATHNAME blob ;
- RUN: <<BOOL FALSE ;
- RUN: << BOOL TRUE ;
- RUN: << PATHNAME foo ;
- RUN: <<OK
-*/
-// RUN: $subdir$stem | ezio -p OUT $test |& ezio -p ERR $test
-// RUN-END:
-
-/*
- OUT-NEXT:^HELLO {:[0-9]+} TEST IDENT ;$
- OUT-NEXT:^MODULE-REPO ;
- OUT-NEXT:^MODULE-EXPORT bar ;
- OUT-NEXT:^MODULE-IMPORT foo ;
- OUT-NEXT:^INCLUDE-TRANSLATE baz.frob ;
- OUT-NEXT:^INCLUDE-TRANSLATE ./corge ;
- OUT-NEXT:^INCLUDE-TRANSLATE ./quux ;
- OUT-NEXT:^MODULE-COMPILED bar
-*/
-// OUT-NEXT:$EOF
-
-// ERR-NEXT:Code:1$
-// ERR-NEXT:Integer:1$
-// ERR-NEXT:Code:5$
-// ERR-NEXT:String:REPO$
-// ERR-NEXT:Code:5$
-// ERR-NEXT:String:biz/bar$
-// ERR-NEXT:Code:5$
-// ERR-NEXT:String:blob$
-// ERR-NEXT:Code:4$
-// ERR-NEXT:Integer:0$
-// ERR-NEXT:Code:4$
-// ERR-NEXT:Integer:1$
-// ERR-NEXT:Code:5$
-// ERR-NEXT:String:foo
-// ERR-NEXT:Code:3$
-// ERR-NEXT:Integer:
-// ERR-NEXT:$EOF
-
-
-// Cody
-#include "cody.hh"
-// C++
-#include <iostream>
-
-using namespace Cody;
-
-int main (int, char *[])
-{
- Client client (0, 1);
-
- client.Cork ();
- if (client.Connect ("TEST", "IDENT").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.ModuleRepo ().GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.ModuleExport ("bar").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.ModuleImport ("foo").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.IncludeTranslate ("baz.frob").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.IncludeTranslate ("./corge").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.IncludeTranslate ("./quux").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
- if (client.ModuleCompiled ("bar").GetCode () != Client::PC_CORKED)
- std::cerr << "Not corked!\n";
-
- auto result = client.Uncork ();
- for (auto iter = result.begin (); iter != result.end (); ++iter)
- {
- std::cerr << "Code:" << iter->GetCode () << '\n';
- switch (iter->GetCategory ())
- {
- case Packet::INTEGER:
- std::cerr << "Integer:" << iter->GetInteger () << '\n';
- break;
- case Packet::STRING:
- std::cerr << "String:" << iter->GetString () << '\n';
- break;
- case Packet::VECTOR:
- {
- auto const &v = iter->GetVector ();
- for (unsigned ix = 0; ix != v.size (); ix++)
- std::cerr << "Vector[" << ix << "]:" << v[ix] << '\n';
- }
- break;
- }
- }
-}
deleted file mode 100644
@@ -1,76 +0,0 @@
-
-// Test resolver pivot
-
-// RUN:<<HELLO 1 TEST IDENT ;
-// RUN:<<MODULE-REPO ;
-// RUN:<<HELLO 1 TEST IDENT
-// RUN: $subdir$stem | ezio -p OUT1 $test |& ezio -p ERR1 $test
-// OUT1-NEXT:HELLO 1 default ;
-// OUT1-NEXT:PATHNAME cmi.cache ;
-// OUT1-NEXT:ERROR 'already connected
-// OUT1-NEXT:$EOF
-// ERR1-NEXT:resolver is handler
-// ERR1-NEXT:$EOF
-
-// RUN:<<MODULE-REPO ;
-// RUN:<<HELLO 1 TEST IDENT ;
-// RUN:<<MODULE-REPO
-// RUN: $subdir$stem | ezio -p OUT2 $test |& ezio -p ERR2 $test
-// OUT2-NEXT:ERROR 'not connected
-// OUT2-NEXT:HELLO 1 default ;
-// OUT2-NEXT:PATHNAME cmi.cache
-// OUT2-NEXT:$EOF
-// ERR2-NEXT:resolver is handler
-// ERR2-NEXT:$EOF
-
-// RUN-END:
-#include "cody.hh"
-#include <iostream>
-
-using namespace Cody;
-
-class Handler : public Resolver
-{
- virtual Handler *ConnectRequest (Server *s, unsigned ,
- std::string &, std::string &)
- {
- ErrorResponse (s, "unexpected connect call");
- return nullptr;
- }
-};
-
-Handler handler;
-
-class Initial : public Resolver
-{
- virtual Handler *ConnectRequest (Server *s, unsigned v,
- std::string &agent, std::string &ident)
- {
- Resolver::ConnectRequest (s, v, agent, ident);
- return &handler;
- }
-};
-
-Initial initial;
-
-int main (int, char *[])
-{
- Server server (&initial, 0, 1);
-
- while (int e = server.Read ())
- if (e != EAGAIN && e != EINTR)
- break;
-
- server.ProcessRequests ();
- if (server.GetResolver () == &handler)
- std::cerr << "resolver is handler\n";
- else if (server.GetResolver () == &initial)
- std::cerr << "resolver is initial\n";
- else
- std::cerr << "resolver is surprising\n";
-
- server.PrepareToWrite ();
- while (int e = server.Write ())
- if (e != EAGAIN && e != EINTR)
- break;
-}
deleted file mode 100644
@@ -1,68 +0,0 @@
-
-// Test server message round tripping
-/*
- RUN:<<HELLO 1 TEST IDENT ;
- RUN:<<MODULE-REPO ;
- RUN:<<MODULE-EXPORT bar ;
- RUN:<<MODULE-IMPORT foo ;
- RUN:<<NOT A COMMAND ;
- RUN:<<INCLUDE-TRANSLATE baz.frob ;
- RUN:<<INCLUDE-TRANSLATE ./quux ;
- RUN:<<MODULE-COMPILED bar ;
- RUN:<<MODULE-IMPORT ''
-*/
-// RUN: $subdir$stem | ezio -p OUT1 $test |& ezio -p ERR1 $test
-
-// These all fail because there's nothing in the server interpretting stuff
-/*
- OUT1-NEXT: ^HELLO 1 default ;
- OUT1-NEXT: ^PATHNAME cmi.cache ;
- OUT1-NEXT: ^PATHNAME bar.cmi ;
- OUT1-NEXT: ^PATHNAME foo.cmi ;
- OUT1-NEXT: ^ERROR 'unrecognized \'NOT
- OUT1-NEXT: ^BOOL FALSE ;
- OUT1-NEXT: ^BOOL FALSE ;
- OUT1-NEXT: ^OK
- OUT1-NEXT: ^ERROR 'malformed
-*/
-// OUT1-NEXT:$EOF
-// ERR1-NEXT:$EOF
-
-/*
- RUN:<<HELLO 1 TEST IDENT
- RUN:<<MODULE-REPO
-*/
-// RUN: $subdir$stem | ezio -p OUT2 $test |& ezio -p ERR2 $test
-/*
- OUT2-NEXT: ^HELLO 1 default
-*/
-// OUT2-NEXT:$EOF
-// ERR2-NEXT:$EOF
-
-// RUN-END:
-
-// Cody
-#include "cody.hh"
-// C++
-#include <iostream>
-
-using namespace Cody;
-
-int main (int, char *[])
-{
- Resolver r;
- Server server (&r, 0, 1);
-
- while (int e = server.Read ())
- if (e != EAGAIN && e != EINTR)
- break;
-
- server.ProcessRequests ();
- if (server.GetResolver () != &r)
- std::cerr << "resolver changed\n";
- server.PrepareToWrite ();
-
- while (int e = server.Write ())
- if (e != EAGAIN && e != EINTR)
- break;
-}
deleted file mode 100644
@@ -1,36 +0,0 @@
-# CODYlib -*- mode:Makefile -*-
-# Copyright (C) 2019-2020 Nathan Sidwell, nathan@acm.org
-# License: Apache v2.0
-
-ALOY := @ALOY@
-TESTS := $(patsubst $(srcdir)/%.cc,%,\
- $(wildcard $(srcdir)/tests/*/*.cc))
-TESTDIRS = $(shell cd $(srcdir)/${<D} ; echo *(/))
-testdir := $(and $(filter-out /%,$(srcdir)),../)$(srcdir)/tests
-
-check:: tests/cody.defs $(TESTS)
- +cd ${<D} && srcbuilddir=$(srcdir)/tests JOUST=${<F} \
- $(ALOY) -t kratos -o cody -g $(testdir)/jouster $(TESTDIRS)
-ifeq ($(firstword $(aloy)),:)
- @echo WARNING: tests were not run as Joust test harness was not found
-endif
-
-tests/cody.defs: tests/Makesub
- echo '# Automatically generated by Make' >$@
- echo 'testdir=$(testdir)' >>$@
- echo 'timelimit=60' >>$@
- echo 'memlimit=1' >>$@
- echo 'cpulimit=60' >>$@
- echo 'filelimit=1' >>$@
- echo 'SHELL=$(SHELL)' >>$@
-
-$(TESTS): %: %.o libcody.a
- $(CXX) $(LDFLAGS) $< -lcody $(LIBS) -o $@
-
-clean::
- rm -f $(TESTS)
- rm -f $(TESTS:=.o) $(TESTS:=.d)
-
-ifeq ($(filter clean%,$(MAKECMDGOALS)),)
--include $(TESTS:=.d)
-endif
deleted file mode 100755
@@ -1,11 +0,0 @@
-#! /bin/zsh
-# CODYlib -*- mode:Makefile -*-
-# Copyright (C) 2019-2020 Nathan Sidwell, nathan@acm.org
-# License Apache v2.0
-
-pushd ${0%/*}
-setopt nullglob
-for subdir in $@ ; do
- echo $subdir/*(.^*)
-done
-popd