Функции закрытия JavaScript с отсутствующим jsDoc в схеме Eclipse

У меня странная проблема с выделением файлов JavaScript в Eclipse 4.2 с использованием JSDT 1.4.1. У меня есть закрытие, определенное следующим образом:

var myClosure = (function() {
    var calcGridLocation,
        detectCollision;

    /**
     * Calculate the grid cell coordinates from the offset of an element and the editorgrid offset
     *
     * @param {jQuery object} obj jQuery object of the object whose location will be calculated
     * @param {String} [subgrid=""] Specify the currently active subgrid
     * @returns {Object} Coordinate object with x, y and obj properties, obj hols a jQuery object of the target cell, null for locations outside the editorgrid
     * @memberOf myClosure
     */
    calcGridLocation = function(obj, subgrid) {
        var gridOffset,     // Offset (relative to document) of the editorgrid
            objOffset,      // Offset (relative to document) of the provided object
            rv = {};        // Return value object

        if(subgrid === null || subgrid === undefined) {
            subgrid = "";
            // Get the grid's offset
            gridOffset = $("#editorgrid").offset();
        }
        else {
            // Get the grid's offset
            gridOffset = $("#" + subgrid).offset();

            subgrid += "_";
        }

        // Get the object's offset
        objOffset = obj.offset();

        // Calculate the grid coordinates of the object
        if(objOffset === undefined || gridOffset === undefined) {
            debugger;
        }
        rv.x = Math.floor((objOffset.left - gridOffset.left) / cellSize);
        rv.y = Math.floor((objOffset.top - gridOffset.top) / cellSize);

        // Check if the location is a valid grid location
        if(rv.x >= 0 && rv.x < tblCellCount && rv.y >= 0 && rv.y < tblRowCount) {
            if(obj.hasClass("gridCell")) {
                rv.obj = obj;
            }
            else {
                // Get the grid cell object and return the return value object
                rv.obj = $("#" + subgrid + "c_" + rv.y + "_" + rv.x);
            }

            return rv;
        }
        else {
            // Return null, no valid grid location
            return null;
        }
    }; //calcGridLocation = function()


    /**
     * Detect a collision of an object with other dragboxes
     *
     * @param {jQuery object} obj Object to check for collisions
     * @returns {Object} Object with collision, obstacle, shift.x and shift.y attributes
     * @memberOf myClosure
     */
    detectCollision = function(obj) {
        // Some code here
    }; //detectCollision = function()
})();

После некоторых исследований я обнаружил, что мне нужны аннотации jsDoc для отображения функций в Eclipse. Первая функция отображается, а вторая - нет. Это просто не в списке.

И действительно странная вещь: если я полностью удалю содержимое первой функции, вторая функция будет отображаться очень хорошо. Есть ли какая-то ошибка в моем синтаксисе, которая вызывает такое поведение? Полный сценарий прекрасно работает, когда я тестирую свой проект в браузере (Google Chrome), и проверяется jsLint (за исключением некоторых случаев, когда я не принимаю способ написания кода jsLint).

Дополнительная информация

Eclipse не показывает несколько функций этого замыкания, приведенный выше является лишь минимальным примером. "Потерянные" функции кажутся совершенно случайными, иногда отсутствует одна, иногда несколько подряд. Также есть функции между отсутствующими, которые показаны в схеме следующим образом: показано, показано, отсутствует, показано, отсутствует, отсутствует,...
Я дважды проверил, что каждая функция имеет @memberOf аннотация jsDoc, которая должна сделать его видимым в схеме.
Пропущенные функции не распознаются редактором как функциональные блоки, поэтому я не могу их сложить (показанную функцию можно сложить). Удаление содержимого из calcGridLocation функция позволяет сворачивать код на detectCollision функция.

0 ответов

Другие вопросы по тегам