Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Length() should be removed from documentation #427

Closed
matthijsgroen opened this issue Apr 14, 2015 · 8 comments · Fixed by #429
Closed

Length() should be removed from documentation #427

matthijsgroen opened this issue Apr 14, 2015 · 8 comments · Fixed by #429

Comments

@matthijsgroen
Copy link
Member

expect('something').to.have.length(9)

and

expect('something').to.have.lengthOf(9)

are the same... on paper

but consider this test:

describe 'overriding properties', ->
  beforeEach ->
    global.expect = require("chai").expect
    global.when = require("when")

  it 'works without overrides', ->
    expect('something').to.have.length(9)

  it 'breaks for each property', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'have', ->
    expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function

  it 'breaks the length method', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'to', ->
    expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function

  it 'does not break the lengthOf method', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'to', ->
    expect('something').to.have.lengthOf(9)

The breaking change is in: https://github.com/chaijs/chai/blob/master/lib/chai/utils/addChainableMethod.js#L79

A function object is constructed, and the object has a length property of its own, and thus overriding the length method the original asserter had.

console.log (->).length # ==> 0

lengthOf is not a magical javascript property and is left alone. We should encourage people to use lengthOf instead of length in the syntax of their tests.

@valscion
Copy link
Contributor

👍 For removing length — this is some really funky behaviour.

@keithamus
Copy link
Member

I concur. We'll need to keep it around for backwards compatibility. Maybe we'll do this:

  • v.next: Remove docs
  • v.next+1: Log deprecation warning when accessing .length()
  • v.major: Remove .length()

Open to PRs removing docs for now.

@valscion
Copy link
Contributor

Great! Wouldn't it be more friendly for chai users to tell about the deprecation in the docs instead of removing the mention altogether?

@keithamus
Copy link
Member

Sure sounds like a better plan.

@valscion
Copy link
Contributor

I'll quickly draft a PR for that now.

@valscion
Copy link
Contributor

Hey @keithamus, I noticed that even using length as a chain precursor fails:

describe 'overriding properties', ->
  beforeEach ->
    global.expect = require("chai").expect
    global.when = require("when")

  it 'works without overrides', ->
    expect('something').to.have.length(9)

  it 'breaks for each property', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'have', ->
    expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function

  it 'breaks the length method', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'to', ->
    expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function

  it 'does not break the lengthOf method', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'to', ->
    expect('something').to.have.lengthOf(9)

  it 'breaks the chain precursor way', ->
    chai = require "chai"
    chai.Assertion.addChainableMethod 'to', ->
    expect([1, 2]).to.have.length.above(1) # Fails with: TypeError: Object 0 has no method 'of'

@keithamus
Copy link
Member

Sounds like that may be different bug. Please feel free to file a new issue.

@matthijsgroen
Copy link
Member Author

Is there still progress in this? What is the hold up at the moment?

kvz added a commit to kvz/ratestate that referenced this issue Sep 20, 2015
- node.js: Use stderr rather than stdout for logging
  Closes #120
- Merge pull request #129 from stephenmathieson/stderr
  node.js: Use stderr rather than stdout for logging
- package: update "browserify" to v5.11.0
- dist: recompile
- Release 2.0.0
- Add version to package.json
  Add version to package.json to work with license tools.
- Add bower json to properly support bower install
- Merge pull request #135 from panuhorsmalahti/master
  Add license to package.json
- add support for chrome apps
- corrected PR for other browsers
  Sorry, this should work now. window.localStorage is undefined in chrome apps.
- package: update "browserify" to v6.1.0
- node: implement `DEBUG_FD` env variable support
  Closes #146.
- Release 2.1.0
- better checking for undefined value
- Added windows usage remarks
- browser: Fixed that no logs output on IE8/9
  IE 8/9 reports console methods as objects when using the typeof operator.
  https://web.archive.org/web/20111123190115/http://whattheheadsaid.com/2011/04/internet-explorer-9s-problematic-console-object
  Closes #148.
- browser: check for console.log truthiness instead
  Related to PR #166
- Merge pull request #166 from mooyoul/ie8
  browser: Fixed that no logs output on IE8/9
- Merge pull request #141 from bright/bower_json
  Add bower.json to properly support bower install
- Merge pull request #149 from akaustel/master
  Added windows usage remarks
- Merge pull request #143 from marmolejo/master
  add support for chrome apps
- Readme++
- browser: use `typeof` to check for `console` existence
  It's a global, so we must check with typeof otherwise
  an error will be thrown if `console` is undefined.
- Release 2.1.1
- fix: security error on safari - closes #167
- Merge pull request #168 from yields/fix/security-error
  fix: security error on safari - closes #167
- Updated documentation about using debug in a browser
- changed bower package name
- Merge pull request #171 from gnaryak/master
  Updated documentation about using debug in a browser
- Merge pull request #174 from andrzejdus/master
  changed bower package name
- component: fix "ms.js" repo location
  Closes #176.
  Squashed commit of the following:
  commit ae4d5f88497d7ce59f476e002ea9b703d3129159
  Author: Anton Wilhelm <timaschew@users.noreply.github.com>
  Date:   Tue Feb 10 09:26:54 2015 +0100
      revert bumping the version
  commit 0689fb1fa035cbfddb71c19beb76160bd4f13875
  Author: Anton Wilhelm <timaschew@users.noreply.github.com>
  Date:   Fri Jan 30 12:05:40 2015 +0100
      update ms.js lib and bump debug
      moved to https://github.com/rauchg/ms.js
- update "ms" to v0.7.0
- package: update "browserify" to v9.0.3
- dist: recompile
- History: normalize whitespace
- Release 2.1.2
- Issue #182: replace high intensity foreground color for bold
- Update Readme.md
  one character typo
- Merge pull request #184 from mykwillis/patch-1
  Update Readme.md
- Renamed example/stderr.js to stdout.js
- Updated example/stdout.js to match debug current behaviour
- Updated stdout/stderr example
- Merge pull request #186 from dmarcelino/181-stderr_stdout
  181 stderr vs stdout
- Merge pull request #183 from dmarcelino/182-color_bold
  Issue #182: replace high intensity foreground color for bold
- Release 2.1.3
- Makefile: add a `distclean` target
  This patch prevents the `clean` target from removing node_modules and
  adds a `distclean` target instead.
  Fixes #162.
- browser: expose `storage`
  This patch allows overriding the default `storage` mechanism.
  Closes #188.
- Merge pull request #189 from stephenmathieson/fix/gh-162
  Makefile: add a `distclean` target
- Merge pull request #190 from stephenmathieson/browser/expose-storage
  browser: expose `storage`
- Fixed a typo in README
- Merge pull request #191 from amir-s/patch-1
  Fixed a typo in README
- add logging to file example to readme
- Merge pull request #193 from DanielOchoa/update-readme
  add logging to file example to readme
- update "ms" to v0.7.1
- Merge pull request #202 from dougwilson/update-ms
  update "ms" to v0.7.1
- Release 2.2.0

- Update Readme.md
- Fix bundle arguments for latest browserify
- Update Readme.md
  Close #17
- Update versions.
- As inspect moved  to repo, changed how date formated
- Added first warning for static should and wrapped value.
- Refactor Assertion
- Added warning to .eql for non strict checks. Also added ability to disable warnings with env variable SHOULDJS_WARN.
- Fix failed test stack
- Refine CONTRIBUTING.md
- Now nested assertion can contribute message for parent assertions
- Primitive it is primitive, not a wrapper
- Updated readme and history for new changes. Fix #13 and visionmedia/should.js#214
- Release 4.1.0
- Update should dependencies - bring new inspections with type detection
- Release 4.2.0
- Make inspection only when we throw exception
- Release 4.2.1
- Exclude error tests from browser tests as it is too different per browser
- Add bower.json to support bower package
- Merge pull request #24 from qqzh002/master
  Add bower.json to support bower package
- Update Readme.md
- Update should-equal, add reason why eql failed
- A bit more clear message
- Clear how to run test
- Remove test running from gulp file
- Release 4.3.0
- Merge branch 'master' of github.com:shouldjs/should.js
- .throw() should check that given object is a function. Fix #27
- Release 4.3.1
- Reimplement assert via should assertion
- Remove passed format
- Tests for assert. Adopted with assumptions in shouldjs
- Attempt to make error tests working in non v8 browsers.
- Release 4.4.0
- Release 4.4.1
- Return old behavour not checking prototypes
- Release 4.4.2
- Fixed little typo in example
- Merge pull request #31 from robi50/patch-1
  Fixed little typo in example
- Update .travis.yml
- Added jsdoc comments
- Merge branch 'master' of github.com:shouldjs/should.js
- Release 4.4.3
- Added .enumerables
- Release 4.4.4
- Add possibility to use old .eql implementation
- Release 4.5.0
- Copy paste typo
- fixed global leak of _eql
- Merge pull request #36 from mrlannigan/master
  fixed global leak of _eql
- Release 4.5.1
- Fix #37
- Release 4.5.2
- Add everywhere shielded by Proxy this. Which check if property exist.
- Release 4.6.0
- Update bower.json version
- Show diff only if both objects have the same type
- Release 4.6.1
- Move examples out of repository
- Make assertion properties to be configurable
- Release 4.6.2
- Fool check
- When objects both are empty we check if they are equals.
- Release 4.6.3
- Fix bug in containDeep
- Release 4.6.4
- When nested errors happen, do not generate message
- Release 4.6.5
- First update for future release.
- Update Readme.md
- Update History.md
- Update History.md
- Update Readme.md
- Move data generation out of test
- Merge branch '5.x' of github.com:shouldjs/should.js into 5.x
- fix version
- Release 5.0.0
- Export util
- Release 5.0.1
- correct jsdoc for Assertion#keys
  Assertion#keys does not accept Object as a argument.
  The jsdoc comment describes that it can accept Object.
- add examples for Assertion#keys
- add examples for Assertion#properties
- Merge pull request #43 from fediev/master
  improve jsdoc comments for assertion keys and properties
- Update Readme.md
- Initial support of es6 symbols, generators, iterators, iterables
- Merge branch 'master' of github.com:shouldjs/should.js
- Fixes shouldjs/should.js#45 - Object #<Object> has no method 'isString' when calling propertyByPath with String argument instead of Array
- Merge pull request #47 from boatmeme/master
  Fixes shouldjs/should.js#45 - Object #<Object> has no method 'isString' ...
- Add generators support to util.forEach
- Merge branch 'master' of github.com:shouldjs/should.js
- Release 5.1.0
- Added Gitter badge
- Merge pull request #49 from gitter-badger/gitter-badge
  Add a Gitter chat badge to Readme.md
- jsdoc example: 'string' should be 'String'
- Merge pull request #51 from kaspars/master
  jsdoc example: 'string' should be 'String'
- Correct docs
- Merge branch 'master' of github.com:shouldjs/should.js
- Add matchAny assertion
  Allows matching one or more object values or array elements
- Add tests for matchAny assertion
- Tweak working in matchAny description
- Merge pull request #53 from nickdaugherty/add/matchAny
  Add/matchAny
- Release 5.2.0
- put version to 5.2.0
- Remove version tag from bower.json
  can be removed like mentioned in bower spec: 'Ignored by Bower as git tags are used instead.'
- Merge pull request #54 from happy-coding/master
  remove version tag from bower.json
- Fix #44 and #55
- Update docs
- Merge branch 'master' of github.com:shouldjs/should.js
- Release 6.0.0
- Release 6.0.1
- Experimental change to remove getter assertions
- Use in all assertions non getter form
- Release 6.0.2
- Replace rest of getter usage
- Release 6.0.3
- Fixed testing instrucitons
- Merge pull request #66 from garrows/fix/testing
  Fixed testing instrucitons
- Typo
- Update to new type, format and equal
- Initial draft of changelog for upcoming release
- Merge branch 'master' of github.com:shouldjs/should.js
- Make .match* more consistent
- Merge remote-tracking branch 'origin/no-get'
  Conflicts:
  	lib/ext/type.js
  	should.js
  	should.min.js
- Adopt new format package, remove Proxy usage
- Remove proxy test
- Add more accurate regexps for IE
- Adjust spaces for safari and IE
- Update History.md
- Correct sources, readme etc to new non-getter style assertions
- Merge branch 'master' of github.com:shouldjs/should.js
- Update chain.js
- Update chain.js
- Release 7.0.0
- Update packages
- Release 7.0.1
- Small corrections
- Update match.js
- Release 7.0.2
- Merge branch 'master' of github.com:shouldjs/should.js
- Update number.js
- alias .deepEqual to .eql
- Merge pull request #74 from Qix-/deepEqual
  alias .deepEqual to .eql
- Release 7.0.3
- Small repo goodies
- Missing doc for .deepEqual
- Before doing matching for object - object. Check that object have property
- Release 7.0.4
- add browserify support
- Merge pull request #82 from ngot/browserify-support
  add browserify support
- Add .belowOrEqual and .aboveOrEqual
- Update
- Add .oneOf and .equalOneOf
- Release 7.1.0

- Show diff for keys assertion
- Merge pull request #264 from cjthompson/keys_diff
  Show diff for keys assertion
- Use SVG badge
- Merge pull request #267 from shinnn/master
  Use SVG badge
- Allow messages to be functions
- Remove unused argument
- Fix assert documentation
- Rewrite pretty-printing HTML elements to prevent throwing internal errors
  Fixes errors occuring when using a non-native DOM implementation
- assert: .closeTo() verify value's type before assertion
- Merge pull request #275 from DrRataplan/master
  Rewrite pretty-printing HTML elements to prevent throwing internal errors
- Dry up code
- Merge pull request #289 from charlierudolph/cr-dryUpCode
  Dry up code
- resolves #255: upgrade mocha
- Merge pull request #292 from boneskull/mocha
  resolves #255: upgrade mocha
- Merge pull request #279 from mohayonao/fix-closeTo
  fix: closeTo should check value's type before assertion
- Merge pull request #277 from charlierudolph/fix-doc
  Fix assert documentation
- Merge pull request #269 from charlierudolph/cr-codeCleanup
  Remove unused argument
- Merge pull request #268 from charlierudolph/cr-lazyMessages
  Allow messages to be functions
- Release 1.9.2
- readme: update contributors for 1.9.2
- Allows writing lint-friendly tests
  This makes the final assertion checks noop functions so that they can be formatted like function calls. This keeps linters (JSLint/JSHint) off our back for having an inop expression.
  Completes #41
- Change test to not trigger argument bug
- added check for logging negative zero
- a more readable/simple condition statement, as pointed out by @keithamus
- added test for inspecting `-0`
- why not more assertions
- Merge pull request #298 from dasilvacontin/negativeZeroLogging
  added check for logging negative zero
- Make the NOOP function a shared constant
- Add docs for function style NOOP asserts
- Revise documentation wording
- Add unit tests for chained terminating property asserts
- Add a couple more unit tests
- Fix #299: the test is defining global variables
- Merge pull request #300 from julienw/299-fix-getMessage-test
  Fix #299: the test is defining global variables
- Merge pull request #297 from prodatakey/noopchainfunc
  Allows writing lint-friendly tests
- Release 1.10.0
- Revert "Allows writing lint-friendly tests"
- Merge pull request #306 from chaijs/revert-297-noopchainfunc
  Revert "Allows writing lint-friendly tests"
- Fix properties with `undefined` value pass property assertion
- couting variables just once
- Merge pull request #309 from ericdouglas/iterableEqual-couting-once
  Couting variables just once
- Handle array indexing terminating paths
- Small unit test fix
- Refactor if statement out
- Refactor common functionality, document, test
- More unit tests for new utility functions
- Fix typo
- Issue #305 fixed, added assert.isAbove and assert.isBelow
- Merge pull request #308 from prodatakey/hasproperty
  Fix properties with `undefined` value pass property assertion
- Merge pull request #311 from cjqed/305-above-below-on-assert
  Issue #305 fixed, added assert.isAbove and assert.isBelow
- Fixes issue #291, adds assert.sameDeepMembers
- Changed public comment of sameDeepMemebers to be more clear
- Merge pull request #312 from cjqed/291-assert-same-deep-members
  Fixes issue #291, adds assert.sameDeepMembers
- Added the all and any flags for keys assertion, with all being the default behavior
  Extended keys documentation and set bools instead of changing flags in the keys assertion
  Miswrote in keys documentation, corrected mistake
  Edited documentation for keys to better match how it interacts with contains and have
- Merge pull request #313 from cjqed/254-expect-any-all
  Added the 'any' and 'all' flags for 'keys' assertion, with 'all' being the default behavior
- update docs: getAllFlags -> transferFlags
  Documentation was out of date
- minor docs typo
- typos in docs
- Merge pull request #316 from jasonkarns/patch-1
  update docs: getAllFlags -> transferFlags
- Merge pull request #318 from jasonkarns/patch-3
  typos in docs
- Merge pull request #317 from jasonkarns/patch-2
  minor docs typo
- Fix docs for overwriteChainableMethod parameters
- Merge pull request #325 from chasenlehara/overwriteChainableMethodDocs
  Fix docs for overwriteChainableMethod parameters
- Add includes and contains alias (fixes #327)
- Merge pull request #328 from lo1tuma/issue-327
  Add includes and contains alias (fixes #327)
- expect/should tests for `change`,`increase`,`decrease`
- assert tests for `change`,`increase`,`decrease`
- added `change`,`increase`,`decrease` assertions (#330)
- updated assertion interface with `change` (#330)
- Typo, the flag is called 'contains' with an 's'
- Merge pull request #334 from hurrymaplelad/patch-1
  Typo, the flag is called 'contains' with an 's'
- updated `change` to work w/ non-number values + tests
- cleanup (per notes on pr #333)
- Expose chai util through the chai object
  The chai util object has a lot of useful functions that can be used
  outside of the context of assertions.
- Merge pull request #335 from DingoEatingFuzz/expose-util
  Expose the util package through the chai object
- cleaned out `.by` for #333
- more `by` cleanup
- Merge pull request #333 from cmpolis/change-assertions
  Added `change`, `increase` and `decrease` assertions with `by` chain (#330)
- add the which chain method as per issue #347
- Merge pull request #349 from toastynerd/add-which-chain-method
  add the which chain method as per issue #347
- added should.fail() method
- changed default message for should.fail()
- using proper error checking method for should
- added fail() method to expect interface
- Update copyright date
- Merge pull request #357 from danilovaz/master
  Update copyright date
- contrib: publish release strategy and travis npm creds #337
- Fix #359 keys() sorts input unexpectedly
- Merge pull request #359 from gregglind/b359-unexpected-keys-sort
  Arrays passed to `.keys()` assertions are sorted (unexpectedly) by side-effect
- fix #359.  Add `.keys(object)
  - `.keys(object)n => .keys(Object.keys(Object)`
  - added exceptions for 'if first arg is non-string, then it must be only
  arg.  => `.keys(Array|Object, ...)`
  Warning:  `Object.keys` must exist on systems to use this functionality.
- Merge pull request #361 from gregglind/b265-keys-object
  Fix #265
- v2.0.0
- fail method added directly to expect
- documented fail methods for expect and should interfaces
- Merge pull request #356 from Soviut/master
  Added fail() method to Should and Expect interfaces
- Merge pull request #364 from chaijs/v2.0.0
  v2.0.0
- 2.0.0
- Fix travis.yml deploy
- Merge pull request #365 from chaijs/fix-travis
  Fix travis.yml deploy
- Increment version to 2.0.1.
  See https://github.com/chaijs/chai/issues/373
- Merge pull request #374 from jmm/v2.0.1
  Increment version to 2.0.1.
- Release v2.1.0
- Merge pull request #375 from chaijs/release-2.1.0
  Release v2.1.0
- Primitives now use valueOf in shouldGetter
  This allows the should syntax to be more resilient when
  dealing with modified primitive constructors which
  may occur more frequently with ES6 to ES5 transpilation.
- Merge pull request #379 from dcneiner/should-primitive-fix
  Getter for Should syntax now uses valueOf for primitives
- Add a minor precision that empty asserts on strings too.
- Merge pull request #381 from astorije/patch-1
  Add a minor precision that empty asserts on strings too.
- Add missing docstring for showDiff argument of assert
- config.truncateThreshold docs: simpler wording
- Merge pull request #383 from gurdiga/config-doc-wording-improvement
  config.truncateThreshold docs: simpler wording
- Merge pull request #382 from astorije/patch-2
  Add missing docstring for showDiff argument of assert
- fix indexing into array with deep propery
  * added unit test to expect with code from documentation
  * added default to res in _getPathValue
- updates to reflect code style preference from @keithamus
- Merge pull request #385 from eldritch-fossicker/master
  fix indexing into array with deep propery
- Release v2.1.1
- Merge pull request #388 from chaijs/release-2.1.1
  Release v2.1.1
- Update `git summary` in README
- Merge pull request #389 from chaijs/update-git-summary
  Update `git summary` in README
- No longer using eval on assert operator #386
- Merge pull request #395 from cjqed/386-assert-operator-no-eval
  No longer using eval on assert operator #386
- Add Keith Cirkel to CONTRIBUTING.md
- Merge pull request #396 from chaijs/add-keith-cirkel-contributing-md
  Add Keith Cirkel to CONTRIBUTING.md
- Add missing parameter showDiff and make docstring "documentationable"
- Release v2.1.2
- Merge pull request #400 from chaijs/release-2.1.2
  Release v2.1.2
- Add README badges
- Escaping dot should be taken in deep property
  * removing backslash prior to "."
  * test case: "foo\\.bar" names {"foo.bar": "baz"}
- Feature: backslash-escaping in `.deep.property`
  This commit includes:
  * getPathInfo handles escaping `.[]`
  * Documentation added to `.property`
  * Documentation added to `.getPathInfo`
  * Test cases for `.property`
  * Test cases for `.deep.property`
  * Test cases for `.getPathInfo`
  Note that the input of `.getPathInfo` assumed to match the following:
  /^(?:(?:\\[.\[\]]|[^.\[\]])+|\[\d+\])(?:\.(?:\\[.\[\]]|[^.\[\]])+|\[\d+\])$/
- take regular expression apart
- Documentation of escaping in `.deep` flag.
- Merge pull request #402 from umireon/escaping-dot-should-be-taken
  Escaping dot should be taken in deep property
- Tweak documentation on `.deep` flag.
- Merge pull request #405 from chaijs/deep-escape-doc-tweaks
  Tweak documentation on `.deep` flag.
- Release v2.2.0
- Add `ownPropertyDescriptor` assertion.
- Merge pull request #411 from chaijs/release-2.2.0
  Release v2.2.0
- Merge pull request #408 from ljharb/enumerableProperty
  Add `propertyDescriptor` assertion
- Fix super minor typo in an example
- Remove trailing whitespaces
- Merge pull request #417 from astorije/astorije/minimalist-typo
  Fix minimalist typo in doc example
- Bump assertion-error to 1.0.1
  Fixes #391
- Add `make test-firefox`
- Use a regex to account for property ordering issues across engines.
- Fix a small bug in the .null assertion docs
- Merge pull request #422 from ljharb/fix_descriptor_tests
  Fix `ownPropertyDescriptor` tests
- Merge pull request #423 from ehntoo/patch-1
  Fix a small inconsistency in the .null assertion docs
- Fix erroneous example in the docstring of the keys assertion
- Add .length(value) deprecation warning to documentation
  Fixes https://github.com/chaijs/chai/issues/427
- Release 2.3.0
- Merge pull request #431 from keithamus/release-2.3.0
  Release 2.3.0
- Fix travis deploy api key
- Merge pull request #432 from keithamus/fix-api-key
  Fix travis deploy api key
- Merge pull request #397 from astorije/astorije/assert-plugin-api
  Add missing parameter showDiff and make docstring "documentationable"
- Merge pull request #401 from chaijs/add-readme-badges
  Add README badges
- Merge pull request #424 from astorije/astorije/minimalist-typo
  Fix erroneous example in the docstring of the keys assertion
- Add Assertion alias: matches => match. Resolves #438
- Merge pull request #439 from thejameskyle/matches-alias
  Add Assertion alias: matches => match
- Merge pull request #429 from valscion/document-deprecation-plan-of-length
  Add .length(value) deprecation warning to documentation
- Quick version fix for length deprecation
- Update `lengthOf` examples
- Merge pull request #419 from chaijs/bump-assertion-version
  Bump assertion-error to 1.0.1
- Merge pull request #444 from chaijs/update-lengthof-docs
  Update `lengthOf` examples
- Switch to use Browserify for builds
  Fixes #362.
- Don't rely on optional args value being implicitly undefined
- Add tests for undefined property error
- Merge pull request #454 from onefifth/undefined_property_value
  Fix misleading .has.property assertions tests
- Merge pull request #451 from csnover/browserify
  Switch to use Browserify for builds
- Assert ifError now throws the error passed in, to keep it consistent with node's assert.ifError
- Replaced type.js with the "chaijs/type-detect" library.
- Merge pull request #456 from chaijs/3.x.x
  3.x.x
- Remove stray character in `assert.notInclude` docs
- Merge pull request #458 from BinaryMuse/patch-1
  Remove stray character in `assert.notInclude` docs
- Remove trailing comma
  Fixes #459
- Automate release process as much as possible
- Merge pull request #460 from keithamus/automate-release
  Automate release process as much as possible
- Update release procedure on CONTRIBUTING.md
- Ensure to include all changed files in release task
- chai@3.0.0
- Merge pull request #461 from keithamus/release-3.0.0
  chai@3.0.0
- Remove moot `version` property from bower.json
  Per bower/bower.json-spec@a325da3
  Also their maintainer says they probably won't ever use it: http://stackoverflow.com/questions/24844901/bowers-bower-json-file-version-property
- Remove moot `version` property bump from Makefile
  Makefile
- Merge pull request #468 from kkirsche/patch-1
  Remove moot `version` property from bower.json
- Assertions to test if objects are extensible
- Assertions to test if objects are sealed
- Assertions to test if objects are frozen
- Merge pull request #479 from matthewlucock/extensible-assertions
  Assertions to test if objects are extensible.
- Added support for NaN. Tests included.
- Merge pull request #480 from bradcypert/NaN-support
  Added tests and expectations for NaN. Ex: `expect(4).not.to.be.NaN;`
- chai@3.1.0
- Merge pull request #481 from keithamus/release-3.1.0
  chai@3.1.0
- Re-encrypt travis API key
  https://twitter.com/Keithamus/status/621789900250193920
- Merge pull request #482 from keithamus/reencrypt-travis-api-key
  Re-encrypt travis API key
- Add respondsTo and satisfies as aliases
- Fixing a typo in the `getProperties()` utility
  ...where `subject` should apparently be `object`.
- Merge pull request #485 from jluchiji/master
  Fixing a typo in the `getProperties()` utility
- Merge pull request #484 from couchand/patch-1
  Add respondsTo and satisfies as aliases
- Added links to contribution guidelines to README
- Merge pull request #486 from jluchiji/master
  Added links to contribution guidelines to README
- Fix docstring regarding assert.notFrozen
- Add aliases to extensible, sealed and frozen properties for consistency
- Fix wrong call to the underlying method when checking if an object is frozen
- Merge pull request #490 from astorije/patch-2
  Fix wrong call to the underlying method when checking if an object is frozen
- Add tests for frozen, sealed and extensible aliases
- Add aliases (and tests) for assert.ok and assert.notOk to match the other isSomething assertions
- Make throws aliases consistent across examples and definitions
- Add tests for throws aliases
- Invert assertions and aliases for is* assertions to make the documentation and code consistent with other is* assertions
- Merge pull request #489 from astorije/astorije/aliases
  Various work on aliases
- chai@3.2.0
- Merge pull request #492 from keithamus/release-3.2.0
  chai@3.2.0

- Make getCommandId() more readable.
- Merge pull request #3503 from datenreisender/handle-dotless-commands
  Handle dotless commands in the REPL.
- remove docco as dependency (still a devDependency)
  also changed version requirement notation for from `n.n.x` to `~n.n.n` like the others
- Merge pull request #3508 from bwin/patch-1
  remove docco as dependency (still a devDependency)
- Remove sudo from install command in introduction
  1. It just seems like a bad practice to encourage people to run npm with `sudo`
  2. The doc wasn’t consistent with itself — down below in the full “Installation” section the same command did *not* include `sudo`
- Remove typo
  No idea how that got in there.
- Merge pull request #3509 from aviflax/patch-1
  Remove sudo from install command in introduction
- Retina favicon.ico
- Update link to "CoffeeScript Ristretto", fixes #3489
- Update link to "CoffeeScript Ristretto", fixes #3489
- Fix off-by-one issue with string interpolation in lexer
- Fix wrong location issue in string interpolation starting with line break
- Merge pull request #3524 from minodisk/master
  Fix location data bug for string interpolations
- Fix wrong location issue in "string" interpolation
- Merge pull request #3533 from minodisk/fix-string-interpolation
  Fix wrong location issue in "string" interpolation
- Fix wrong location issue in heregex interpolation
- Merge pull request #3539 from minodisk/fix-heregex-interpolation
  Fix wrong location issue in heregex interpolation
- Add a test case for compiler error formatting.
  Error formatting with mixed tab and space.
- Fixed an error formatting issue f7b36054fcbcc0c26f
  When using tab for code indent, the error marker
  will be wrongly positioned.
- Merge pull request #3543 from ysmood/err_info_issue
  Fixed an error formatting issue
- `bin/cake` will be in `coffeescript`
  Since the name change, `bin/cake` will be in `coffeescript`, not `coffee-script`.
- Merge pull request #3545 from jordanbtucker/patch-1
  `bin/cake` will be in `coffeescript`
- Fix the "Examples" link on coffeescript.org
  It now points to the "Trending repositories" of the month.
- Fix the "Examples" link on coffeescript.org
  It now points to the "Trending repositories" of the month.
- Use '.js.map' as file extension for created map files
  Addresses jashkenas/coffeescript#3297
- Merge pull request #3561 from yjo/js-map-file-ext
  Use '.js.map' as file extension for created map files
- Exit with an error code 1 if could not write a compiled JavaScript file or a source map
  Currently CoffeeScript reports a success even if it failed to write a
  compiled file to disk. This behavior confuses automated tools such as
  test runners which may return false positives if a test failed to
  compile because of a file lock.
- Merge pull request #3592 from mmotorny/master
  Exit with an error code 1 if could not write a compiled JavaScript file ...
- Rebuild docs
- Update changelog for 1.8.0
- Merge pull request #3611 from lydell/release-1.8.0
  Release 1.8.0
- CoffeeScript 1.8.0
- merged
- Quick spelling fixes
- Merge pull request #3616 from epmatsw/spelling
  Quick spelling fixes
- Remove josh/nack from Examples
- Add Atom to Examples
- Merge pull request #3618 from josh/update-site-example-projects
  Refresh site Examples section
- Merge remote-tracking branch 'A/master'
- removed support for '->*" and '=>*'
- added 'yield from'
- added 'yield return'
- always wrap 'yield' in () to allow composability with all other operators
- added tests for yield, yield from, yield return and yield in if statements
- Fixed jashkenas/coffeescript#3638 - invalid block comments compilation
- Added test for jashkenas/coffee-script#3638
- Merge pull request #3240 from alubbe/master
  using 'yield' automatically turns functions into generators
- Merge pull request #3638 from lbeschastny/issue3638
  Invalid block comments compilation
- Use stdio option instead of customFds
- Added failing test case for the `yield` precedence
- Improved test readability + fixed integer divison
- implemented proper precedence for 'yield'
- Merge pull request #3677 from alubbe/master
  implemented proper precedence for 'yield'
- Merge pull request #3521 from gscottolson/master
  Retina favicon.ico
- Added an initial bower.json configuration file
- Removed "mkdirp": "~0.3.5" from bower.json
- Merge pull request #3703 from bigtunacan/master
  Add bower.json configuration
- add Die Alternative to books section
- fixed yield keyword not working in switch & for loop expressions
- added tests for yield in switch & for loop expressions
- Merge pull request #3734 from alubbe/master
  fixed yield keyword not working in switch & for loop expressions
- include logo .svg files
- Merge pull request #3748 from sscotth/master
  Include logo .svg files
- Refactor interpolation (and string and regex) handling in lexer
  - Fix #3394: Unclosed single-quoted strings (both regular ones and heredocs)
    used to pass through the lexer, causing a parsing error later, while
    double-quoted strings caused an error already in the lexing phase. Now both
    single and double-quoted unclosed strings error out in the lexer (which is the
    more logical option) with consistent error messages. This also fixes the last
    comment by @satyr in #3301.
  - Similar to the above, unclosed heregexes also used to pass through the lexer
    and not error until in the parsing phase, which resulted in confusing error
    messages. This has been fixed, too.
  - Fix #3348, by adding passing tests.
  - Fix #3529: If a string starts with an interpolation, an empty string is no
    longer emitted before the interpolation (unless it is needed to coerce the
    interpolation into a string).
  - Block comments cannot contain `*/`. Now the error message also shows exactly
    where the offending `*/`. This improvement might seem unrelated, but I had to
    touch that code anyway to refactor string and regex related code, and the
    change was very trivial. Moreover, it's consistent with the next two points.
  - Regexes cannot start with `*`. Now the error message also shows exactly where
    the offending `*` is. (It might actually not be exatly at the start in
    heregexes.) It is a very minor improvement, but it was trivial to add.
  - Octal escapes in strings are forbidden in CoffeeScript (just like in
    JavaScript strict mode). However, this used to be the case only for regular
    strings. Now they are also forbidden in heredocs. Moreover, the errors now
    point at the offending octal escape.
  - Invalid regex flags are no longer allowed. This includes repeated modifiers
    and unknown ones. Moreover, invalid modifiers do not stop a heregex from
    being matched, which results in better error messages.
  - Fix #3621: `///a#{1}///` compiles to `RegExp("a" + 1)`. So does
    `RegExp("a#{1}")`. Still, those two code snippets used to generate different
    tokens, which is a bit weird, but more importantly causes problems for
    coffeelint (see clutchski/coffeelint#340). This required lots of tests in
    test/location.coffee to be updated. Note that some updates to those tests are
    unrelated to this point; some have been updated to be more consistent (I
    discovered this because the refactored code happened to be seemingly more
    correct).
  - Regular regex literals used to erraneously allow newlines to be escaped,
    causing invalid JavaScript output. This has been fixed.
  - Heregexes may now be completely empty (`//////`), instead of erroring out with
    a confusing message.
  - Fix #2388: Heredocs and heregexes used to be lexed simply, which meant that
    you couldn't nest a heredoc within a heredoc (double-quoted, that is) or a
    heregex inside a heregex.
  - Fix #2321: If you used division inside interpolation and then a slash later in
    the string containing that interpolation, the division slash and the latter
    slash was erraneously matched as a regex. This has been fixed.
  - Indentation inside interpolations in heredocs no longer affect how much
    indentation is removed from each line of the heredoc (which is more
    intuitive).
  - Whitespace is now correctly trimmed from the start and end of strings in a few
    edge cases.
  - Last but not least, the lexing of interpolated strings now seems to be more
    efficient. For a regular double-quoted string, we used to use a custom
    function to find the end of it (taking interpolations and interpolations
    within interpolations etc. into account). Then we used to re-find the
    interpolations and recursively lex their contents. In effect, the same string
    was processed twice, or even more in the case of deeper nesting of
    interpolations. Now the same string is processed just once.
  - Code duplication between regular strings, heredocs, regular regexes and
    heregexes has been reduced.
  - The above two points should result in more easily read code, too.
- Point "missing )/}/]" errors to the unclosed (/{/[
  Previously such errors pointed at the end of the input, which wasn't very
  helpful. This is also consistent with unclosed strings, where the errors point
  at the opening quote.
  Note that this includes unclosed #{ (interpolations).
- Merge pull request #3770 from lydell/interpolations
  Refactor interpolation (and string and regex) handling in lexer
- Fix issue #3498
- Merge pull request #3771 from mbrio/master
  Fix issue #3498
- Fix #2516, #3560: Unicode space handling
  It is possible to match only valid JavaScript identifiers with a really long
  regex (like coco and CoffeeScriptRedux does), but CoffeeScript uses a much
  simpler one, which allows a bit too much.
  Quoting jashkenas/coffeescript#1718 #issuecomment-2152464 @jashkenas:
  > But it still seems very much across the "worth it" line. You'll get the
  > SyntaxError as soon as it hits JS, and performance aside -- even the increase
  > in filesize for our browser coffee-script.js lib seems too much, considering
  > this is something no one ever does, apart from experimentation.
  In short, CoffeeScript treats any non-ASCII character as part of an identifier.
  However, unicode spaces should be excluded since having blank characters as part
  of a _word_ is very confusing. This commit does so, while still keeping the
  regex really simple.
- Merge pull request #3774 from lydell/unicode-spaces
  Fix #2516, #3560: Unicode space handling
- Fix #3598: Make unary + and - generate _refs
  Before commit c056c93e `Op::isComplex()` used to return true always. As far as I
  understand, that commit attempts to exclude code such as `+1` and `-2` from
  being marked as complex (and thus getting cached into `_ref` variables
  sometimes). CoffeeScript is supposed to generate readable output so that choice
  is understandable. However, it also excludes code such as `+a` (by mistake I
  believe), which can cause `a` to be coerced multiple times. This commit fixes
  this by only excluding unary + and - ops followed by a number.
- Fix #3410, #3182: Allow regex to start with space or =
  A regex may not follow a specific set of tokens. These were already known before
  in the `NOT_REGEX` and `NOT_SPACED_REGEX` arrays. (However, I've refactored them
  to be more correct and to add a few missing tokens). In all other cases (except
  after a spaced callable) a slash is the start of a regex, and may now start with
  a space or an equals sign. It’s really that simple!
  A slash after a spaced callable is the only ambigous case. We cannot know if
  that's division or function application with a regex as the argument. The
  spacing determines which is which:
  Space on both sides:
  - `a / b/i`  -> `a / b / i`
  - `a /= b/i` -> `a /= b / i`
  No spaces:
  - `a/b/i`    -> `a / b / i`
  - `a/=b/i`   -> `a /= b / i`
  Space on the right side:
  - `a/ b/i`   -> `a / b / i`
  - `a/= b/i`  -> `a /= b / i`
  Space on the left side:
  - `a /b/i`   -> `a(/b/i)`
  - `a /=b/i`  -> `a(/=b/i)`
  The last case used to compile to `a /= b / i`, but that has been changed to be
  consistent with the `/` operator. The last case really looks like a regex, so it
  should be parsed as one.
  Moreover, you may now also space the `/` and `/=` operators with other
  whitespace characters than a space (such as tabs and non-breaking spaces) for
  consistency.
  Lastly, unclosed regexes are now reported as such, instead of generating some
  other confusing error message.
  It should perhaps also be noted that apart from escaping (such as `a /\ b/`) you
  may now also use parentheses to disambiguate division and regex: `a (/ b/)`. See
  https://github.com/jashkenas/coffeescript/issues/3182#issuecomment-26688427.
- Fix #3671: Allow step in optimized range comprehensions
  Allow the `by c` part in `for [a..b] by c then`.
  Continue disallowing a `when d` part, since it makes no sense having a guard
  that isn't given access to anything that changes on every iteration.
- Merge pull request #3783 from lydell/issue-3671
  Fix #3671: Allow step in optimized range comprehensions
- Merge pull request #3777 from lydell/unary-plus-minus-refs
  Fix #3598: Make unary + and - generate _refs
- Merge pull request #3782 from lydell/regex
  Fix #3410, #3182: Allow regex to start with space or =
- Add test for reserved keywords as parameters
- Fix #1500, #1574, #3318: Name generated vars uniquely
  Any variables generated by CoffeeScript are now made sure to be named to
  something not present in the source code being compiled. This way you can no
  longer interfere with them, either on purpose or by mistake. (#1500, #1574)
  For example, `({a}, _arg) ->` now compiles correctly. (#1574)
  As opposed to the somewhat complex implementations discussed in #1500, this
  commit takes a very simple approach by saving all used variables names using a
  single pass over the token stream. Any generated variables are then made sure
  not to exist in that list.
  `(@a) -> a` used to be equivalent to `(@a) -> @a`, but now throws a runtime
  `ReferenceError` instead (unless `a` exists in an upper scope of course). (#3318)
  `(@a) ->` used to compile to `(function(a) { this.a = a; })`. Now it compiles to
  `(function(_at_a) { this.a = _at_a; })`. (But you cannot access `_at_a` either,
  of course.)
  Because of the above, `(@a, a) ->` is now valid; `@a` and `a` are not duplicate
  parameters.
  Duplicate this-parameters with a reserved word, such as `(@case, @case) ->`,
  used to compile but now throws, just like regular duplicate parameters.
- Allow variables named like helper functions
- Better error message for unexpected CALL_END
- Merge pull request #3788 from lydell/unexpected-call-end
  Better error message for unexpected CALL_END
- Merge pull request #3784 from lydell/unique-generated-vars
  Unique generated vars
- Get rid of `Scope.root` hack
  Using the static property `Scope.root` for the top-level scope of a file is a
  hack, which makes it impossible to have several independent `Scope` instances
  at the same time (should we ever need that).
  This commit makes every instance have a reference to its root instead.
- Fix #3502: Define param variables when expansion
- Merge pull request #3790 from lydell/scope-root
  Get rid of `Scope.root` hack
- Merge pull request #3791 from lydell/issue-3502
  Fix #3502: Define param variables when expansion
- Fix #3194: Make strings always uncallable
  No matter if they have interpolations or not.
- Make CoffeeScript work with jison 0.4.14+
  Since zaach/jison commit 3548861b, `parser.lexer` is never modified anymore (a
  copy of it is made, and that copy is modified instead). CoffeeScript itself
  modifies `parser.lexer` and then accesses those modifications in the custom
  `parser.yy.parseError` function, but that of course does not work anymore. This
  commit puts the data that `parser.yy.parseError` needs directly on the `parser`
  so that it is not lost.
  Supersedes #3603. Fixes #3608 and zaach/jison#243.
- Merge pull request #3794 from lydell/jison-update
  Make CoffeeScript work with jison 0.4.14+
- Make regexes always uncallable
  No matter if they have interpolations or not.
- Merge pull request #3792 from lydell/issue-3194
  Fix #3194: Make strings always uncallable
- Fix #1316: Interpolate interpolations safely
  Instead of compiling to `"" + + (+"-");`, `"#{+}-"'` now gives an appropriate
  error message:
      [stdin]:1:5: error: unexpected end of interpolation
      "#{+}-"
          ^
  This is done by _always_ (instead of just sometimes) wrapping the interpolations
  in parentheses in the lexer. Unnecessary parentheses won't be output anyway.
  I got tired of updating the tests in test/location.coffee (which I had enough of
  in #3770), which relies on implementation details (the exact amount of tokens
  generated for a given string of code) to do their testing, so I refactored them
  to be less fragile.
- Merge pull request #3787 from lydell/single-token-interpolation
  Fix #1316: Interpolate interpolations safely
- Fixed broken link
- Merge pull request #3798 from ogennadi/patch-1
  Fixed broken link
- Decouple "mkdirp"
  Make coffee completely independent.
- Fix #3804: Provide list of referenced vars to REPL
  Supersedes #3805. Here is a comparison of master, #3805 and this commit:
      # master
      $ bin/coffee
      coffee> 1 %% 2
      TypeError: Array.prototype.indexOf called on null or undefined
      # #3805
      $ bin/coffee
      coffee> 1 %% 2
      1
      coffee> (_results = null; i) for i in [1, 2, 3]
      TypeError: Cannot call method 'push' of null
      # this commit
      $ bin/coffee
      coffee> 1 %% 2
      1
      coffee> (_results = null; i) for i in [1, 2, 3]
      [ 1, 2, 3 ]
- Merge pull request #3807 from lydell/repl-fix
  Fix #3804: Provide list of referenced vars to REPL
- Fix broken CoffeeScript APIs
  As evidenced in #3804, commit 8ab15d7 broke the CoffeeScript API. The REPL uses
  those APIs, but wasn't updated in that commit. Still, that shouldn't have
  _broken_ the REPL. The reason it broke is because the added _option_
  'referencedVars' wasn't actually _optional;_ if it was omitted code that relies
  on it being set broke. This commit defaults that option to an empty array, which
  makes things behave exactly like before when the 'referencedVars' option is
  omitted.
- Merge pull request #3808 from lydell/api-break-fix
  Fix broken CoffeeScript APIs
- Update index.html.js
  Node comes with npm installed and "npm" is not an abbreviation for "Node Package Manager".
- Merge pull request #3812 from xfq/patch-1
  Update index.html.js
- Add test for mkdirp
- Optimize the mkdirp test
- rebuilt browser just for testing
- Merge pull request #3800 from ysmood/decouple_mkdirp
  Decouple "mkdirp".
- removing the mkdirp test
- CoffeeScript 1.9.0
- text tweak
- Merge branch 'gh-pages'
- more text tweaks
- docs
- Fixes #3816 -- prettier internal variable names.
- #3819 changelog docs
- move changelog
- Revert "move changelog"
  This reverts commit 3ddd3115eb3e703c0ad78cc2742b24c8585e37b7.
- Name generated variables without leading underscore
  For example, `ref` not `_ref`. It's cleaner.
  This also fixes #3816.
- Merge pull request #3821 from lydell/no-underscore
  Name generated variables without leading underscore
- redoc
- Merge branch 'master' of github.com:jashkenas/coffeescript
- Fix #3822: Include delimiters in string/regex locations
- Merge pull request #3826 from lydell/string-locations
  Fix #3822: Include delimiters in string/regex locations
- Fix #3778: Make for loops more consistent
  The following two lines might seem equivalent:
      for n in [1, 2, 3] by  a then a = 4; n
      for n in [1, 2, 3] by +a then a = 4; n
  But they used not to be, because `+a` was cached into a `ref`, while the plain
  `a` wasn’t. Now even simple identifiers are cached, making the two lines
  equivalent as expected.
- Merge pull request #3786 from lydell/loop-safety
  Fix #3778: Make for loops more consistent
- Improve error messages for unexpected regexes
- Allow super in methods with dynamic names
  As discussed in https://github.com/jashkenas/coffeescript/issues/3039#issuecomment-68916918.
  This is the first step to implement dynamic object literal keys (see #3597).
  This also fixes #1392.
  In short, `super` is now allowed:
      # in class definitions:
      class A
        instanceMethod: -> super
        @staticMethod: -> super
        @staticMethod2 = -> super
      # in assignment where the next to last access is 'prototype':
      A::m = -> super
      A.prototype.m = -> super
      a.b()[5]::m = -> super
      A::[x()] = -> super
      class B
        @::m = -> super
- Merge pull request #3785 from lydell/super
  Allow super in methods with dynamic names
- Merge pull request #3827 from lydell/unexpected-regex
  Improve error messages for unexpected regexes
- Fix incorrect token representation
  The third element in a token should just be an object containing line
  number and column info. This PR fixes the problem with one of the tokens
  being set incorrectly.
- Merge pull request #3830 from swang/fix_incorrect_token
  Fix incorrect token representation
- Fix #3795: Never generate invalid strings and regexes
  - Invalid `\x` and `\u` escapes now throw errors.
  - U+2028 and U+2029 (which JavaScript treats as newline characters) are now
    escaped to `\u2028` and `\u2029`, respectively.
  - Octal escapes are now forbidden not only in strings, but in regexes as well.
  - `\0` escapes are now escaped if needed (so that they do not form an octal
    literal by mistake). Note that `\01` is an octal escape in a regex, while `\1`
    is a backreference. (Added a test for backreferences while at it.)
  - Fixed a bug where newlines in strings weren't removed if preceded by an
    escaped character.
- Merge pull request #3833 from lydell/escapes
  Fix #3795: Never generate invalid strings and regexes
- Improve lexer error messages
  - Erraneous tokens are now fully underlined with ^:s.
  - The error messages are now a bit more consistent.
- Merge pull request #3834 from lydell/better-lexer-errors
  Improve lexer error messages
- Replace `last array` helper with `[..., last] = array`
- Merge pull request #3841 from lydell/last
  Replace `last array` helper with `[..., last] = array`
- Fixed copyright range to be updated to 2015
- Merge pull request #3842 from arianf/master
  Fixed copyright range to be updated to 2015
- Fix #3597: Allow interpolations in object keys
  The following is now allowed:
      o =
        a: 1
        b: 2
        "#{'c'}": 3
        "#{'d'}": 4
        e: 5
        "#{'f'}": 6
        g: 7
  It compiles to:
      o = (
        obj = {
          a: 1,
          b: 2
        },
        obj["" + 'c'] = 3,
        obj["" + 'd'] = 4,
        obj.e = 5,
        obj["" + 'f'] = 6,
        obj.g = 7,
        obj
      );
  - Closes #3039. Empty interpolations in object keys are now _supposed_ to be
    allowed.
  - Closes #1131. No need to improve error messages for attempted key
    interpolation anymore.
  - Implementing this required fixing the following bug: `("" + a): 1` used to
    error out on the colon, saying "unexpected colon". But really, it is the
    attempted object key that is unexpected. Now the error is on the opening
    parenthesis instead.
  - However, the above fix broke some error message tests for regexes. The easiest
    way to fix this was to make a seemingly unrelated change: The error messages
    for unexpected identifiers, numbers, strings and regexes now say for example
    'unexpected string' instead of 'unexpected """some #{really long} string"""'.
    In other words, the tag _name_ is used instead of the tag _value_.
    This was way easier to implement, and is more helpful to the user. Using the
    tag value is good for operators, reserved words and the like, but not for
    tokens which can contain any text. For example, 'unexpected identifier' is
    better than 'unexpected expected' (if a variable called 'expected' was used
    erraneously).
  - While writing tests for the above point I found a few minor bugs with string
    locations which have been fixed.
- Merge pull request #3840 from lydell/dynakeys
  Fix #3597: Allow interpolations in object keys
- allow multiline comment inside of an object definition [Fixes #3761]
  use more CoffeeScript syntax
- Merge pull request #3802 from mapmeld/multiline_comment_fix
  Allow multiline comment at end of an object definition [Fixes #3761]
- Fix error message for invalid escape at end of regex
- Fix #3846: Fix odd start token of implicit objects
  Now the same hack as for reserved identifier tokens in the lexer is used
  instead.
- Merge pull request #3850 from lydell/implicit-object-start-token
  Fix #3846: Fix odd start token of implicit objects
- Merge pull request #3849 from lydell/regex-end-invalid-escape
  Fix error message for invalid escape at end of regex
- Prevent writing the same file several times (fixes #3753)
- Merge pull request #3758 from DiThi/master
  Prevent writing the same file several times (fixes #3753)
- fixed being unable to use 'yield throw'
- Merge pull request #3853 from alubbe/fixyieldthrow
  fixed being unable to use 'yield throw'
- added a lot of ES6 generator tests
- Merge pull request #3852 from alubbe/moretests
  added a lot of ES6 generator tests
- fixed overly fragile repl test to work with 0.12, see https://github.com/jashkenas/coffeescript/issues/3855
- Merge pull request #3858 from alubbe/master
  fixed overly fragile repl test to work with 0.12
- fixed yield return producing incorrect output when used outside of the last line
- improved yield return test
- Merge pull request #3854 from alubbe/fixyieldreturn
  fixed yield return producing incorrect output when used outside of the last line
- Fix single-line heredocs starting with "undefined"
- Merge pull request #3861 from lydell/heredoc-undefined
  Fix single-line heredocs starting with "undefined"
- CoffeeScript 1.9.1
- #3862 changelog
- variable names
- add -r/--require command line option
- Merge pull request #3867 from sgentle/require-option
  add -r/--require command line option
- Replace references to jQuery's 'bind' with 'on'
- Merge pull request #3871 from jcrben/doc_tweak
  Replace references to jQuery's 'bind' with 'on'
- Add link of changelog
- Delete README
- Fix getting of character at index
- Merge pull request #3872 from banyan/add-link-of-changelog
  Update README.md and remove README
- Merge pull request #3873 from Taritsyn/master
  Fix getting of character at index
- added descriptions to tests which only had Issue numbers
- Merge pull request #3877 from gilesbowkett/ocd-test-description-details
  added descriptions to tests which only had Issue numbers
- yield now behaves as expected around 'this' - fixes https://github.com/jashkenas/coffeescript/issues/3882
- Merge pull request #3883 from alubbe/master
  yield now behaves as expected around 'this'
- Escape literal `[` in regexp
  Improves compatibility with strict ES5 regexp syntax
- Merge pull request #3885 from josh/escape-literal-bracket-regexp
  Escape literal [ in regexp
- Revert "Escape literal [ in regexp"
- Merge pull request #3886 from jashkenas/revert-3885-escape-literal-bracket-regexp
  Revert "Escape literal [ in regexp"
- Reverts #3758, Fixes #3863 -- kills the broken warning
- Merge pull request #3661 from dtaniwaki/fix-deprecated-option
  Use stdio option instead of customFds
- Escape literal ] in REGEX
  ] is not allowed in the PatternCharacter set
- Merge pull request #3893 from josh/escape-literal-bracket-regexp
  Escape literal ] in regexp
- Added checking on process.stdout to be compatible with browserify
- optionally to read data-src out from <script>
- add compiled lib/browser.js
- Merge pull request #3706 from imcotton/script-data-src
  Optionally to read data-src out from <script>
- Merge pull request #3892 from matthieubulte/master
  Added checking on process.stdout to be compatible with browserify
- bumped version to 1.9.2
- added 1.9.2 changelog
- build & docs for 1.9.2
- Merge pull request #3942 from alubbe/master
  1.9.2
- #3942 -- revising changelog
- adding new packt book at their request
- fix write after FIN error when using repl via socket
  if repl.outputStream is a socket, it is closed when 'exit' event
  occurred, so write throws an exception
- fix history file descriptor leak
- Merge pull request #3952 from sixmen/fix_write_after_fin
  fix write after FIN error when using repl via socket
- Merge pull request #3953 from sixmen/fix_repl_fd_leak
   fix history file descriptor leak
- Fix #3965, sourcemaps for bare programs.
  Instead of mapping all generated spaces and semicolons and newlines
  to the source position (0,0), we avoid generating sourcemap information
  for generated space-or-semicolon-only fragments.
  (In addition to shortening sourcemaps, this fixes a correctness issue
  where an empty fragment at the beginning of each line maps from (0,0),
  but in a bare program, that position at the begining of the line
  should map from the actual source line.  When this conflict occurred,
  (0,0) would win, resulting in an incorrect sourcemap, where each
  top-level function call mapped to (0,0).)
- Add tests for implicit calls with implicit object
- Fix #3935: Implicit calls + obj key interpolation
  Allow implicit calls when the first key of an implicit object has interpolation.
- Fix `CoffeeScript.nodes(tokens)`; fix the repl
  If you passed an array of tokens (as opposed to a string of code) to
  `CoffeeScript.nodes`, its attempts to prettify error messages would break. Now
  it does not attempt to prettify error messages in that case anymore (because it
  is not possible to prettify the errors without a string of code).
  The repl was affected by the above bug.
  Fixes #3887.
- Save alias names in the origin of tokens
  ... and use it for "reserved word can't be assigned" errors. Fixes #2306.
- Merge pull request #3969 from lydell/alias-origin
  Save alias names in the origin of tokens
- Merge pull request #3967 from lydell/implicit-call-implicit-obj
   	Fix #3935: Implicit calls + obj key interpolation
- Merge pull request #3968 from lydell/nodes-tokens-errors
  Fix `CoffeeScript.nodes(tokens)`; fix the repl
- Document extra try/catch features
  Fixes #3958.
- Improve modulo documentation
  Fixes #3959.
- Document interpolation in object keys
  Fixes #3962.
- Document `yield from` and `yield return`
  Fixes #3825.
- Document `a for [b..c]`
- Merge pull request #3970 from lydell/docs
  Document a few undocumented things
- Improved try/catch/finally to explain the options better.
- Merge pull request #3974 from carlsmith/issue3958
  Improved try/catch/finally to explain the options better.
- Merge pull request #3966 from davidbau/simplesourcemaps
  Fix #3965, sourcemaps for bare programs.
- Commit compiled code that should have been in commit 378a04e4
- Fix formatting of `#`-only lines in herecomments
  Before:
      $ ./bin/coffee -bpe '###
      > # paragraph 1
      > #
      > # paragraph 2
      > ###'
      /*
       * paragraph 1
      #
       * paragraph 2
       */
  After:
      $ ./bin/coffee -bpe '###
      # paragraph 1
      #
      # paragraph 2
      ###'
      /*
       * paragraph 1
       *
       * paragraph 2
       */
  This does not re-break #3638:
      $ ./bin/coffee -bpe '###
      > #/
      > ###'
      /*
      #/
       */
- Merge pull request #3979 from lydell/herecomments-formatting
   	Fix formatting of `#`-only lines in herecomments
- CoffeeScript 1.9.3
- Replace "instanceof Array" in transformer with "[object Array]" comparison
  Testing with `'[object Array]' is Object::toString.call element` allows arrays from another JS context to be properly handled. The specific use case here is to support jest, which sets up JS contexts using Node/io.js's "vm" module. This approach works in ES3 environments in contrast with ES5's `Array.isArray`.
- Merge pull request #3980 from lydell/v1.9.3
  CoffeeScript 1.9.3
- redoc
- correct release date
- Merge pull request #3985 from ide/array-check
  Replace "instanceof Array" in transformer with "[object Array]" comparison
- don't copy arguments or caller from require
  causes an error in io.js where strict-mode is set on internal modules
  Fixes: https://github.com/jashkenas/coffeescript/issues/3810
- Merge pull request #4019 from rvagg/master
  Don't copy arguments or caller from require
- Reset @seenFor in lexer before tokenizing
- Merge pull request #4029 from yjerem/reset-seenfor
  Reset @seenFor in lexer before tokenizing
- Closes #4036: "Try catch" optimisation
  Let me know if there's something I should be doing differently as this is my first contribution to coffeescript.
  I fixed the reported issue where a generated variable could clash with a user-defined one in a try/catch block.
  I added a test for a few scenarios with different variable names for a try/catch, to confirm the fix and avoid regressions.
- Improved the tests and removed the hardcoded variable, according to suggestions.
- Removing the unnecessary underscore now :)
- Removing unnecessary assignment
- Updated compile
- Merge pull request #4059 from BrunoBernardino/hotfix/4036-try-variable-improvement
  Closes #4036: "Try catch" optimisation
- Fix #1192: Assignment starting with object literals
- Merge pull request #4068 from lydell/issue-1192
  Fix #1192: Assignment starting with object literals
- Fix #4070: Improve error message for lone expansion
- Merge pull request #4071 from lydell/lone-expansion
  Fix #4070: Improve error message for lone expansion
- Implement ES2015-like destructuring defaults
  This let's you do things like:
      fullName = ({first = 'John', last = 'Doe'}) -> "#{first} #{last}"
  Note: CoffeeScrits treats `undefined` and `null` the same, and that's true in
  the case of destructuring defaults as well, as opposed to ES2015 which only uses
  the default value if the target is `undefined`. A similar ES2015 difference
  already exists for function parameter defaults. It is important for CoffeeScript
  to be consistent with itself.
      fullName2 = (first = 'John', last = 'Doe') -> "#{first} #{last}"
      assert fullName('Bob', null) is fullName2(first: 'Bob', last: null)
  Fixes #1558, #3288 and #4005.
- Merge pull request #4069 from lydell/destructuring-defaults
  Implement ES2015-like destructuring defaults
- Fix #3926: Disallow implicit objects as parameter destructuring
- Document destructuring defaults
- Merge pull request #4074 from lydell/destructuring-defaults-docs
  Document destructuring defaults
- Improve the documentation site on smaller screens
  "Smaller screens" means screens smaller than 820px wide. That's the smallest
  width that the current design looks good at.
  I tried to not change the current design in any way and to make as few changes
  as possible.
  This is what happens on smaller screens:
  - The navigation bar is no longer fixed to the viewport, but always at the top
    of the page.
  - The navigation bar is vertical rather than horizontal.
  - CoffeeScript code is above the compiled JavaScript rather than having them
    side by side.
  This allows for a larger text size, which is more compfortable to read, and no
  horizontal scrolling, which many find difficult to use.
- Remove unnecessary blank lines at EOF in examples
  On less wide screens, where the CoffeeScript is above the JavaScript, those
  lines resulted in an unnecessarily high box of CoffeeScript code.
- Git rid of the deprecated `<tt>` tag in the docs
  Replaced with `<code>` tags.
- Merge pull request #4075 from lydell/documentation-improvements
  Documentation improvements
- Merge pull request #4073 from lydell/issue-3926
  Fix #3926: Disallow implicit objects as parameter destructuring
- CoffeeScript 1.10.0
- Merge pull request #4079 from lydell/v1.10.0
  CoffeeScript 1.10.0
kinland pushed a commit to kinland/chai-have-all-properties that referenced this issue Mar 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants