Comments (4)
I actually did the following:
find . -type f -not -path "./coverage/*" -exec grep "throw" -H '{}' \; > ~/thrown.txt
If you just use grep
, I had problems with some of the test files that include a named pipe and grep just got hungup.
I then removed all the lines with throw new
:
grep -v "throw new" thrown.txt > throw_no_new.txt
From here I scanned through the list and removed .md
, .mjs
/testdata/
. It left a few hundred that didn't take too long to filter. There were a few common patters:
- One that were in comments. This was easy to spot because the line starts with a
*
return this.throwError(
- Text like "should not throw error"
_test.ts
files
I'm pretty quick with multi-cursors in VSCode, so I just filtered those common cases by hand. It left me with things you'd expect throw Error
and stuff like throw err
. There were maybe 10 files, and I just went through them and checked that the throw err
was really just a re-throw and not some variable that was constructed earlier. If we assume that all Errors start with a capital, then grep "throw [A-Z]"
now produces:
./crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs: throw Error("TextDecoder not available");
./crypto/_wasm/lib/deno_std_wasm_crypto.generated.mjs: throw Error("TextEncoder not available");
./Releases.md:- fix(encoding/base64url): throw TypeError in case of invalid base64url string
./fs/move.ts: throw EXISTS_ERROR;
The first 2 are in a generated file. 3rd one is in a README, and the last one throws a constant which is defined as:
const EXISTS_ERROR = new Deno.errors.AlreadyExists("dest already exists.");
I'm sure I missed something, but I think we can close this and if someone sees one I missed they can file an issue and I'll see if there is a pattern.
from deno_std.
I'll close this. Thanks @iuioiua for the quick review.
from deno_std.
Here is a quick and dirty analysis of where throw
doesn't include new
. Many of these are re-throws, so they don't need it.
./toml/parse_test.ts: throw "Custom parser";
./net/get_available_port.ts: throw e;
./dotenv/mod.ts: throw e;
./dotenv/mod.ts: throw e;
./cache/memoize.ts: throw reason;
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(`FormatterError: { ${part.type} ${part.value} }`);
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./datetime/_date_time_formatter.ts: throw Error(
./fmt/printf.ts: throw Error(
./streams/buffer.ts: throw Error(
./streams/buffer.ts: throw Error(
./async/delay.ts: throw error;
./async/abortable.ts: throw e;
./async/mux_async_iterator.ts: throw e;
./io/buf_reader_test.ts: throw Error("Expected Uint8Array");
./io/buf_reader_test.ts: throw Error("Expected Uint8Array");
./io/buf_writer.ts: throw e;
./io/buf_writer.ts: throw e;
./io/buf_writer.ts: throw e;
./io/buf_writer.ts: throw e;
./io/buf_reader.ts: throw Error("Buffer full while filling");
./io/buf_reader.ts: throw err;
./io/buf_reader.ts: throw Error("Peek count cannot be negative");` is
./io/buffer.ts: throw Error("Buffer truncation out of range");
./io/buffer.ts: throw Error("Buffer growth cannot be negative");
./encoding/hex.ts: throw errInvalidByte(byte);
./encoding/hex.ts: throw errLength(u8.length);
./assert/rejects_test.ts: throw { wrong: "true" };
./assert/rejects.ts: throw Error();
./assert/throws_test.ts: throw "Panic!";
./assert/throws_test.ts: throw "Panic!";
./assert/throws_test.ts: throw null;
./assert/throws_test.ts: throw undefined;
./assert/throws_test.ts: throw "Panic!";
./assert/throws_test.ts: throw 1;
./assert/throws_test.ts: throw null;
./assert/throws_test.ts: throw undefined;
./testing/mock.ts: throw error;
./testing/mock.ts: throw error;
./testing/mock.ts: throw error;
./testing/mock.ts: throw error;
./testing/mock.ts: if (value instanceof Error) throw value;
./testing/mock.ts: if (value instanceof Error) throw value;
./testing/snapshot.ts: throw error;
./http/file_server.ts: throw error;
./http/file_server.ts: throw error;
./log/rotating_file_handler.ts: throw error;
./fs/empty_dir.ts: throw err;
./fs/empty_dir.ts: throw err;
./fs/ensure_file.ts: throw err;
./fs/ensure_file.ts: throw err;
./fs/ensure_dir.ts: throw err;
./fs/ensure_dir.ts: throw err;
./fs/ensure_dir.ts: throw err;
./fs/ensure_dir.ts: throw err;
./fs/expand_glob.ts: throw error;
./fs/move.ts: throw error;
./fs/move.ts: throw error;
./fs/move.ts: throw error;
./fs/walk_test.ts: throw err;
./fs/copy.ts: throw err;
./fs/copy.ts: throw err;
./fs/empty_dir_test.ts: throw err;
./fs/exists.ts: throw error;
./fs/exists.ts: throw error;
./expect/_matchers.ts: throw e;
./expect/_matchers.ts: throw e;
./expect/fn.ts: throw err;
from deno_std.
Just checking that the search parameters are correct here. I think we should be searching for the regex throw (?!new)
. This should also include cases such as throw SyntaxError()
, etc.
from deno_std.
Related Issues (20)
- encodeBase64/decodeBase64 seems to be inefficient HOT 13
- bug(collection): Inconsistent behavior between `pick` and `omit`
- bug(log): `warn()` and others behave different depending on import
- `@std/fs` `exists[Sync]` Does Not Require `--allow-sys` Any More? HOT 1
- Return type of `http/getCookies` is `Record<string, string>` instead of `Record<string, string | undefined>` HOT 5
- experiment: BYO test coverage explorer HOT 9
- to-do: deprecate and remove `@std/archive`
- to-do: trim `@std/io` APIs
- `@std/http/route` is doesn't automatically route `HEAD` requests HOT 5
- LogLevel redundant setup
- `levenshteinDistance` doesn't correctly handle code points over U+FFFF
- Use of locale-sensitive methods with `undefined` locale may cause environment-sensitive bugs HOT 1
- bug: simple `expect().toReturnWith()` works incorrectly HOT 2
- @std/tar hangs indefinitely unlike @std/archive HOT 8
- [FR] spatial data-structures
- std/yaml no longer exports Schema in a usable way? HOT 9
- STD doesn't pass fmt linting
- to-do: archive deprecated packages HOT 1
- suggestion: change `LimitedBytesTransformStream` behavior HOT 1
- The deno test --filter CLI option does not filter individual BDD tests
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from deno_std.