Opened 10 years ago

Closed 7 years ago

#10022 closed defect (fixed)

Do not pick up non-string literal dojo.require calls in the build system.

Reported by: James Burke Owned by: Rawld Gill
Priority: low Milestone: 1.7
Component: BuildSystem Version: 1.3.2
Keywords: needsreview Cc:
Blocked By: Blocking:

Description

buildUtil.getDependencyList needs to change its regexp to only pick up ["']value["'] matches.

Check uses of buildUtil.masterDependencyRegExpString, buildUtilXd needs to change too.

Change History (6)

comment:1 Changed 10 years ago by ole

I was hoping it would work like this:

dojo.require(clazz);

--Check to see whether clazz can be loaded.

--If so include it as a dependency in the layer

--If not just ignore it.

This would enable this:

dojo.declare("com.my.Class", null
{
    A_CONSTANT_CLASS_DEFINITION: "com.my.other.SomeOtherClass";
    constructor: function()
    {
        dojo.require(this.A_CONSTANT_CLASS_DEFINITION);
    }
}

This would avoid having to dojo.require("com.my.other.SomeOtherClass?"); at the top of the class definition as well.

comment:2 Changed 9 years ago by James Burke

Milestone: 1.5future

comment:3 Changed 7 years ago by bill

Owner: changed from James Burke to Rawld Gill

Bulk update to assign BuildSystem? tickets to Rawld. Many of these are probably already fixed in 1.7.

comment:4 Changed 7 years ago by ben hockey

Keywords: needsreview added
Priority: highlow

i'd say this should be closed as wontfix

comment:5 Changed 7 years ago by bill

Assuming that the current build system doesn't choke on something like below, we can close this as fixed in 1.7:

var foo = "dijit/form/DateTextBox";
define([foo], function(){ ... });

(I wouldn't expect it to put dijit/form/DateTextBox into the build but at least it shouldn't crash.)

comment:6 Changed 7 years ago by Rawld Gill

Milestone: future1.7
Resolution: fixed
Status: newclosed

We're trying to get our of regex hell with build system. Also AMD gives you exactly the feature you are looking for:

// the module my/subclass
define(["my/superclass"], function(super){
  return dojo.declare([super], {
    // etc.
  });
});
Note: See TracTickets for help on using tickets.