Commits on Nov 8, 2017
  1. make distcheck fixes

    mikegerwitz committed Nov 8, 2017
    In particular, creating the build/ directory during VPATH builds was
    problematic.  I wasted too much time on this, so I opted for simply creating
    the directory in each of the targets.
    * Use {=>top_}srcdir.  Create $(path_build) in each target as
      (path_build): Use top_builddir.
      (PHONY): Remove mkbuild target.
      (mkbuild, $(path_build)): Remove targets.
Commits on Nov 7, 2017
  1. NEWS: Increase line threshold

    mikegerwitz committed Nov 7, 2017
    * tools/gitlog-to-news: 15-line minimum
  2. tools/mkrelease: Use distcheck

    mikegerwitz committed Nov 7, 2017
    * tools/mkrelease: Use distcheck instead of plain dist.  Add hint for failure.
  3. Makefile `reconf' target success when not in git repo

    mikegerwitz committed Nov 7, 2017
    * (reconf): Succeed when not in git repo.  Use `'.
Commits on Nov 4, 2017
  1. Copyright year update for all files modified since 0.2.8

    mikegerwitz committed Nov 4, 2017
    * lib/MemberBuilderValidator.js: Updated copyright year.
    * lib/class.js: Updated copyright year.
    * test/Class/ConstructorTest.js: Updated copyright year.
    * test/Class/ExtendTest.js: Updated copyright year.
    * test/Class/GeneralTest.js: Updated copyright year.
    * test/MemberBuilderValidator/MethodTest.js: Updated copyright year.
    * test/Trait/LinearizationTest.js: Updated copyright year.
    * test/Trait/VirtualTest.js: Updated copyright year.
  2. Properly handle error subtype #constructor (#__constructor alias)

    mikegerwitz committed Nov 4, 2017
    Using `#constructor' in place of `#__construct' caused an error attempting
    to "redefine" `#__constructor' (once the alias was applied); the system was
    making improper assumptions and not accounting for aliases.
    In fact, everthing about how this was being done was bad, since adding any
    keywords would have thrown it off as well!
    * lib/ClassBuilder.js (build): Move ector detection past prop
      parsing.  Check parsed properties instead of raw.
    * test/ClassBuilder/ErrorExtendTest.js: Iterate ctor override test on new
      (caseSetUp) [ctors]: Add property.
  3. Correct copyright line in combine-test.tpl

    mikegerwitz committed Nov 4, 2017
    This was broken a while back when the copyright years were updated.
    I apparently never ran tests after building ease-full.js after that point.
    * tools/combine-test.tpl: Fix comment.
  4. Add two hashes to signchk-ignore

    mikegerwitz committed Nov 4, 2017
    I had just gotten back into easejs development and must not have had git
    configured to automatically sign commits.
    More notably, though, is that all of my old commits are signed with a
    now-revoked signature.  I'll have to come up with a plan for that with
    regards to signature verification; not dealing with that right now.
    * tools/signchk-ignore: Add hashes of two commits I mistakenly did not sign.
  5. Fail intelligently if provided class in place of definition object

    mikegerwitz committed Nov 4, 2017
    This is intended mainly to handle cases where the user forgets the second
    argument when extending a class:
      Class.extend( Base )  // missing second argument (definition object)
    * lib/ClassBuilder.js
      (exports.isClass): Move from lib/class.js.
      ( Throw error if definition object is a class.
    * lib/class.js (module.exports.isClass): Reference `ClassBuilder.isClass'.
    * test/Class/ExtendTest.js: Add respective test case.
  6. Correct Trait#__inst in ES3 environments

    mikegerwitz committed Nov 4, 2017
    The previous commit's test case failed in ES3 environments.  I'd amend that
    commit, but Savannah refuses force pushes, and I can't work around that on
    * lib/Trait.js (tctor): Assign `__inst' to the public visibility object
      rather than `vis'.
Commits on Nov 2, 2017
  1. Modernize documentation examples

    mikegerwitz committed Nov 2, 2017
    Despite working with ES3+, the perceived age of the project is probably a
    deterrent, and we really should be showing users the modern way of doing
    `impl-details.texi' was _not_ modernized because those details are indeed
    specific to ES3.
    * doc/classes.texi:
    * doc/integration.texi:
    * doc/interop.texi:
    * doc/mkeywords.texi: Update documentation.
  2. Fix trait __inst

    mikegerwitz committed Nov 2, 2017
    `this.__inst' within trait methods will now correctly resolve to the public
    visibility object of the class we're mixed into, rather than
    `undefined'.  This behavior is consistent with the rest of the system.
    * lib/ClassBuilder.js (initInstance): Add `inst' to private metadata.  This
      is the public visibility object.
    * lib/Trait.js (tctor): Initialize concrete trait `__inst' to aforementioned
      `inst' metadata value.
    * test/Trait/LinearizationTest.js: Add respective test.
Commits on Oct 29, 2017
  1. Ignore ChangeLogs in NEWS

    mikegerwitz committed Oct 29, 2017
    * tools/gitlog-to-news: Account for ChangeLog entries in commit messages.
Commits on Oct 28, 2017
  1. Add Class.assert{InstanceOf,isA}

    mikegerwitz committed Oct 28, 2017
    * lib/class.js (assertInstanceOf, assertIsA): New methods.
    * test/Class/GeneralTest.js: Add respective tests.
    * doc/classes.texi (Type Checks and Polymorphism): Add reference for
        methods.  Update and format text.  Add indexes for "polymorphism",
        "type checking", and "duck typing".
Commits on Jul 26, 2017
  1. Merge README with

    mikegerwitz committed Jul 26, 2017
    Having both is confusing.  I also think it might be confusing
    (which isn't a good reason to modify my tree, but hopefully it'll be a nice
    * README: Remove file.
    * Absorb README.
Commits on Jun 30, 2017
  1. Test parameterized traits with named staging object

    mikegerwitz committed Jun 30, 2017
    * test/Trait/NamedTest.js: Add regression test.
      Update copyright to include 2017.
  2. `override' implies `virtual'

    mikegerwitz committed Feb 1, 2017
    This behavior is consistent with other OO languages like C++ and C# that do
    not have virtual methods by default.
    This solution isn't ideal, but I don't have time for a larger refactoring
    right now.  I sat on this change for a good few weeks before committing it
    * lib/MemberBuilderValidator.js (validateMethod): Allow override of
      supertype overrides.
    * test/*: Stripped `virtual' keyword where appropriate.
    * doc/classes.texi (Inheritance): Update to state that `override' implies
Commits on Jan 3, 2017
  1. Copyright 2017 year update on manual and headers

    mikegerwitz committed Jan 3, 2017
    I'm starting to get old.  And so's ease.js.
    * doc/easejs.texi: Add 2017 copyright year.
    * tools/combine-test.tpl: Add 2017 copyright year.
    * tools/license-min.tpl: Add 2017 copyright year.
    * tools/license.tpl: Add 2017 copyright year.
  2. Add constructor reference caveat to manual

    mikegerwitz committed Jan 3, 2017
    * doc/classes.texi: Add caveat for referencing the constructor when using
      ES6-style naming.
  3. Fix trait extending of supertype with constructor

    mikegerwitz committed Jan 3, 2017
    Supertypes that extend constructors may now be extended by traits without
    completely blowing up.  Good feature.
    * lib/Trait.js (__tconstruct): Add function.
      (createVirtProxy): Use it.
    * test/Trait/ClassExtendTest.js: Add test.
  4. Constructor virtual by default

    mikegerwitz committed Jan 3, 2017
    * lib/ClassBuilder.js (_keywordParser): Make __construct virtual.
    * test/Class/ConstructorTest.js: Add test.
    * doc/classes.texi (Constructors): Update documentation.
  5. Rework constructor section in manual

    mikegerwitz committed Jan 3, 2017
    My writing style has changed quite a bit since this was first written.
    * doc/classes.text (Constructors):
      Reword section.
      Remove reference to static classes and singletons (we do not want to
        encourage such things).
      Add mention of good constructor practices.
Commits on Dec 29, 2016
  1. Minor cleanup to trait naming test

    mikegerwitz committed Dec 29, 2016
    test/Trait/NamedTest.js: Cleanup interface-related naming test.
  2. Support for named trait class extending

    mikegerwitz committed Dec 29, 2016
    We can call this a's more of a neglected feature that's
    otherwise completely inconsistent with the rest of the system. :)
    * lib/Trait.js (createNamedTrait): Support base.
      (_createStaging) [extend]: Support base.
    * test/Trait/NamedTest.js: Add test.
  3. Copyright year updates for recent trait changes

    mikegerwitz committed Dec 29, 2016
    * lib/Trait.js: Add Copyright year 2016.
    * test/Trait/ContextTest.js: Add Copyright year 2016.
  4. Rename Trait/{Scope=>Context}Test

    mikegerwitz committed Dec 29, 2016
    This better reflects its focus.
    * test/Trait/ScopeTest.js: Rename file (delete).
    * test/Trait/ContextTest.js: Rename file (create).
  5. Correct trait->class calling context on class supertype

    mikegerwitz committed Dec 29, 2016
    See test cases for more information.  This was a pretty unfortunate and
    nasty bug that I discovered while working on a project that uses easejs; it
    wasn't something that was found previously because this support was only
    added relatively recently, and this problem does not exist if an interface
    is used.
    * lib/Trait.js (bindSuperCtx): Add function.
      (tctor): Use it.
    * test/Trait/ScopeTest.js: Add calling context tests.
Commits on Dec 28, 2016
  1. Fix silly mix{o=e}r typo in Trait

    mikegerwitz committed Dec 28, 2016
    * lib/Trait.js (_validateMixin): Change docblock and error message to
        resolve typo.
Commits on Oct 15, 2016
  1. Add missing INSTALL

    mikegerwitz committed Oct 15, 2016
    Autoconf generates INSTALL boilerplate, so I had added it to .gitignore in
    the past.  Unfortunately, I do include my own INSTALL file, which is present
    in the distribution, but has never been committed to the repo!
    Thanks to Stefan Schweter for pointing this out to me.
    * INSTALL: Added.
    * .gitignore (/INSTALL): Removed.
Commits on Jul 21, 2016
  1. Fail mkrelease on npm publish failure

    mikegerwitz committed Jul 21, 2016
    * tools/mkrelease: exit on failed `npm publish'
  2. Shorten combined min license header

    mikegerwitz committed Jul 21, 2016
    * tools/license-min.tpl: Shorten software URL;
      use HTTPS; and use range for copyright years
  3. Copyright year updates for combined files

    mikegerwitz committed Jul 21, 2016
    * tools/*.tpl: Add 2015, 2016 to copyright years
  4. Correct variable name in combined header

    mikegerwitz committed Jul 21, 2016
    Clearly a bad case of search/replace.
    * tools/combine.tpl: {util=>easejs}
Commits on Jul 16, 2016
  1. Update copyright years on main Texinfo manual page

    mikegerwitz committed Jul 16, 2016
    * doc/easejs.texi: Add 201{5,6} to copyright years