Commit b40445e7 authored by Kenton Varda's avatar Kenton Varda

Remove or defer TODO(soon)s that I'm not going to do now.

parent 620ba371
...@@ -114,5 +114,3 @@ enum TestJsonAnnotatedEnum { ...@@ -114,5 +114,3 @@ enum TestJsonAnnotatedEnum {
baz @2 $Json.name("renamed-baz"); baz @2 $Json.name("renamed-baz");
qux @3; qux @3;
} }
# TODO(now): enums
...@@ -214,8 +214,8 @@ kj::String JsonCodec::encodeRaw(JsonValue::Reader value) const { ...@@ -214,8 +214,8 @@ kj::String JsonCodec::encodeRaw(JsonValue::Reader value) const {
} }
void JsonCodec::encode(DynamicValue::Reader input, Type type, JsonValue::Builder output) const { void JsonCodec::encode(DynamicValue::Reader input, Type type, JsonValue::Builder output) const {
// TODO(soon): For interfaces, check for handlers on superclasses, per documentation... // TODO(someday): For interfaces, check for handlers on superclasses, per documentation...
// TODO(soon): For branded types, should we check for handlers on the generic? // TODO(someday): For branded types, should we check for handlers on the generic?
// TODO(someday): Allow registering handlers for "all structs", "all lists", etc? // TODO(someday): Allow registering handlers for "all structs", "all lists", etc?
KJ_IF_MAYBE(handler, impl->typeHandlers.find(type)) { KJ_IF_MAYBE(handler, impl->typeHandlers.find(type)) {
(*handler)->encodeBase(*this, input, output); (*handler)->encodeBase(*this, input, output);
......
...@@ -2809,11 +2809,11 @@ KJ_TEST("HttpClient connection management") { ...@@ -2809,11 +2809,11 @@ KJ_TEST("HttpClient connection management") {
KJ_EXPECT(count == 0); KJ_EXPECT(count == 0);
#if __linux__ #if __linux__
// TODO(soon): Figure out why this doesn't work on Windows and is flakey on Mac. My guess is that // TODO(someday): Figure out why this doesn't work on Windows and is flakey on Mac. My guess is
// the closing of the TCP connection propagates synchronously on Linux so that by the time we // that the closing of the TCP connection propagates synchronously on Linux so that by the time
// poll() the EventPort it reports the client end of the connection has reached EOF, whereas on // we poll() the EventPort it reports the client end of the connection has reached EOF, whereas
// Mac and Windows this propagation probably involves some concurrent process which may or may // on Mac and Windows this propagation probably involves some concurrent process which may or
// not complete before we poll(). A solution in this case would be to use a dummy in-memory // may not complete before we poll(). A solution in this case would be to use a dummy in-memory
// ConnectionReceiver that returns in-memory pipes (see UnbufferedPipe earlier in this file), // ConnectionReceiver that returns in-memory pipes (see UnbufferedPipe earlier in this file),
// so that we don't rely on any non-local behavior. Another solution would be to pause for // so that we don't rely on any non-local behavior. Another solution would be to pause for
// a short time, maybe. // a short time, maybe.
......
...@@ -1570,7 +1570,7 @@ kj::Own<kj::AsyncInputStream> HttpInputStream::getEntityBody( ...@@ -1570,7 +1570,7 @@ kj::Own<kj::AsyncInputStream> HttpInputStream::getEntityBody(
KJ_IF_MAYBE(te, headers.get(HttpHeaderId::TRANSFER_ENCODING)) { KJ_IF_MAYBE(te, headers.get(HttpHeaderId::TRANSFER_ENCODING)) {
// TODO(someday): Support plugable transfer encodings? Or at least gzip? // TODO(someday): Support plugable transfer encodings? Or at least gzip?
// TODO(soon): Support stacked transfer encodings, e.g. "gzip, chunked". // TODO(someday): Support stacked transfer encodings, e.g. "gzip, chunked".
if (fastCaseCmp<'c','h','u','n','k','e','d'>(te->cStr())) { if (fastCaseCmp<'c','h','u','n','k','e','d'>(te->cStr())) {
return kj::heap<HttpChunkedEntityReader>(*this); return kj::heap<HttpChunkedEntityReader>(*this);
} else { } else {
...@@ -1588,7 +1588,7 @@ kj::Own<kj::AsyncInputStream> HttpInputStream::getEntityBody( ...@@ -1588,7 +1588,7 @@ kj::Own<kj::AsyncInputStream> HttpInputStream::getEntityBody(
} }
KJ_IF_MAYBE(c, headers.get(HttpHeaderId::CONNECTION)) { KJ_IF_MAYBE(c, headers.get(HttpHeaderId::CONNECTION)) {
// TODO(soon): Connection header can actually have multiple tokens... but no one ever uses // TODO(someday): Connection header can actually have multiple tokens... but no one ever uses
// that feature? // that feature?
if (fastCaseCmp<'c','l','o','s','e'>(c->cStr())) { if (fastCaseCmp<'c','l','o','s','e'>(c->cStr())) {
return kj::heap<HttpConnectionCloseEntityReader>(*this); return kj::heap<HttpConnectionCloseEntityReader>(*this);
......
...@@ -152,7 +152,7 @@ public: ...@@ -152,7 +152,7 @@ public:
// //
// HttpHeaderId::HOST // HttpHeaderId::HOST
// //
// TODO(soon): Fill this out with more common headers. // TODO(someday): Fill this out with more common headers.
#define DECLARE_HEADER(id, name) \ #define DECLARE_HEADER(id, name) \
static const HttpHeaderId id; static const HttpHeaderId id;
......
...@@ -183,7 +183,7 @@ public: ...@@ -183,7 +183,7 @@ public:
void shutdownWrite() override { void shutdownWrite() override {
KJ_REQUIRE(shutdownTask == nullptr, "already called shutdownWrite()"); KJ_REQUIRE(shutdownTask == nullptr, "already called shutdownWrite()");
// TODO(soon): shutdownWrite() is problematic because it doesn't return a promise. It was // TODO(0.8): shutdownWrite() is problematic because it doesn't return a promise. It was
// designed to assume that it would only be called after all writes are finished and that // designed to assume that it would only be called after all writes are finished and that
// there was no reason to block at that point, but SSL sessions don't fit this since they // there was no reason to block at that point, but SSL sessions don't fit this since they
// actually have to send a shutdown message. // actually have to send a shutdown message.
......
...@@ -72,8 +72,8 @@ constexpr auto NOT_SCHEME_CHARS = SCHEME_CHARS.invert(); ...@@ -72,8 +72,8 @@ constexpr auto NOT_SCHEME_CHARS = SCHEME_CHARS.invert();
constexpr auto HOST_CHARS = ALPHAS.orGroup(DIGITS).orAny(".-:[]_"); constexpr auto HOST_CHARS = ALPHAS.orGroup(DIGITS).orAny(".-:[]_");
// [] is for ipv6 literals. // [] is for ipv6 literals.
// _ is not allowed in domain names, but the WHATWG URL spec allows it in hostnames, so we do, too. // _ is not allowed in domain names, but the WHATWG URL spec allows it in hostnames, so we do, too.
// TODO(soon): The URL spec actually allows a lot more than just '_', and requires nameprepping to // TODO(someday): The URL spec actually allows a lot more than just '_', and requires nameprepping
// Punycode. We'll have to decide how we want to deal with all that. // to Punycode. We'll have to decide how we want to deal with all that.
void toLower(String& text) { void toLower(String& text) {
for (char& c: text) { for (char& c: text) {
......
...@@ -137,7 +137,7 @@ Exception::Type typeOfErrno(int error) { ...@@ -137,7 +137,7 @@ Exception::Type typeOfErrno(int error) {
Exception::Type typeOfWin32Error(DWORD error) { Exception::Type typeOfWin32Error(DWORD error) {
switch (error) { switch (error) {
// TODO(soon): This needs more work. // TODO(someday): This needs more work.
case WSAETIMEDOUT: case WSAETIMEDOUT:
return Exception::Type::OVERLOADED; return Exception::Type::OVERLOADED;
...@@ -360,7 +360,7 @@ void Debug::Fault::init( ...@@ -360,7 +360,7 @@ void Debug::Fault::init(
const char* file, int line, Win32Result osErrorNumber, const char* file, int line, Win32Result osErrorNumber,
const char* condition, const char* macroArgs, ArrayPtr<String> argValues) { const char* condition, const char* macroArgs, ArrayPtr<String> argValues) {
LPVOID ptr; LPVOID ptr;
// TODO(soon): Why doesn't this work for winsock errors? // TODO(someday): Why doesn't this work for winsock errors?
DWORD result = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | DWORD result = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, FORMAT_MESSAGE_IGNORE_INSERTS,
......
...@@ -729,7 +729,7 @@ KJ_TEST("DiskDirectory createTemporary") { ...@@ -729,7 +729,7 @@ KJ_TEST("DiskDirectory createTemporary") {
KJ_EXPECT(dir->listNames() == nullptr); KJ_EXPECT(dir->listNames() == nullptr);
} }
#if !__CYGWIN__ // TODO(soon): Figure out why this doesn't work on Cygwin. #if !__CYGWIN__ // TODO(someday): Figure out why this doesn't work on Cygwin.
KJ_TEST("DiskDirectory replaceSubdir()") { KJ_TEST("DiskDirectory replaceSubdir()") {
TempDir tempDir; TempDir tempDir;
auto dir = tempDir.get(); auto dir = tempDir.get();
......
...@@ -1171,7 +1171,7 @@ public: ...@@ -1171,7 +1171,7 @@ public:
candidatePath, candidatePath,
GENERIC_READ | GENERIC_WRITE, GENERIC_READ | GENERIC_WRITE,
0, 0,
NULL, // TODO(soon): makeSecAttr(WriteMode::PRIVATE), when it's implemented NULL, // TODO(someday): makeSecAttr(WriteMode::PRIVATE), when it's implemented
CREATE_NEW, CREATE_NEW,
FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE, FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
NULL); NULL);
......
...@@ -119,7 +119,7 @@ TEST(Mutex, MutexGuarded) { ...@@ -119,7 +119,7 @@ TEST(Mutex, MutexGuarded) {
EXPECT_EQ(321u, value.getWithoutLock()); EXPECT_EQ(321u, value.getWithoutLock());
} }
#if KJ_USE_FUTEX // TODO(soon): Implement on pthread & win32 #if KJ_USE_FUTEX // TODO(someday): Implement on pthread & win32
TEST(Mutex, When) { TEST(Mutex, When) {
MutexGuarded<uint> value(123); MutexGuarded<uint> value(123);
......
...@@ -66,7 +66,7 @@ public: ...@@ -66,7 +66,7 @@ public:
// non-trivial, assert that the mutex is locked (which should be good enough to catch problems // non-trivial, assert that the mutex is locked (which should be good enough to catch problems
// in unit tests). In non-debug builds, do nothing. // in unit tests). In non-debug builds, do nothing.
#if KJ_USE_FUTEX // TODO(soon): Implement on pthread & win32 #if KJ_USE_FUTEX // TODO(someday): Implement on pthread & win32
class Predicate { class Predicate {
public: public:
virtual bool check() = 0; virtual bool check() = 0;
...@@ -263,7 +263,7 @@ public: ...@@ -263,7 +263,7 @@ public:
inline T& getAlreadyLockedExclusive() const; inline T& getAlreadyLockedExclusive() const;
// Like `getWithoutLock()`, but asserts that the lock is already held by the calling thread. // Like `getWithoutLock()`, but asserts that the lock is already held by the calling thread.
#if KJ_USE_FUTEX // TODO(soon): Implement on pthread & win32 #if KJ_USE_FUTEX // TODO(someday): Implement on pthread & win32
template <typename Cond, typename Func> template <typename Cond, typename Func>
auto when(Cond&& condition, Func&& callback) const -> decltype(callback(instance<T&>())) { auto when(Cond&& condition, Func&& callback) const -> decltype(callback(instance<T&>())) {
// Waits until condition(state) returns true, then calls callback(state) under lock. // Waits until condition(state) returns true, then calls callback(state) under lock.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment