Tag Archives: javascript

WebStorm: Fix js syntax highlighting.

When I use WebStorm 7.0.3, sometimes the editor for JavaScript shows me wrong syntax highlighting or coloring.
This can be fixed mostly with adding some annotations to tell the editor meaning of the code.

But unfortunately, the problem cannot be fixed on this way, infrequently.
In this case, I fix as follows,

  1. Open the project which has this problem.
  2. Click ‘File’ -> ‘Invalidate Caches/Restart…’
  3. Click [Invalidate and Restart] button when opened the dialog.
  4. IDE will restart and open the project.

I hope this will help you.

closure compiler bug?

When I compile the JavaScript in following with Closure Compiler, usually I get an warning message “WARNING – Bad type annotation. Unknown type ClassA”. But, sometimes the compiler put no warning message.

(function() {

  /**
   * @private
   * @constructor
   */
  function ClassA() {
  }

  /** @type {function()} */
  ClassA.prototype.say = function() {
    console.log("hoge");
  };

  /**
   * @private
   * @constructor
   */
  function ClassB() {
    /** @type {ClassA} */
    this.a = new ClassA();
  }

  /**
   * @expose
   */
  ClassB.prototype.say = function() {
    this.a.say();
  };

  /* export */
  window['ClassB_Singleton'] = new ClassB();
})();

This is the output with no warning message.

X:\>java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --warning_level VERBOSE a.js
(function(){function a(){}function b(){this.a=new a}a.prototype.say=function(){console.log("hoge")};b.prototype.say=function(){this.a.say()};window.ClassB_Singleton=new b})();

This is the output with warning message.

X:\>java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --warning_level VERBOSE a.js
a.js:20: WARNING - Bad type annotation. Unknown type ClassA
    /** @type {ClassA} */
               ^

0 error(s), 1 warning(s), 93.3% typed
(function(){function a(){}function b(){this.a=new a}a.prototype.say=function(){console.log("hoge")};b.prototype.say=function(){this.a.say()};window.ClassB_Singleton=new b})();

Which is the behavior by the compiler design?

# Of-course, it can be disabled completely with jscomp_off checkTypes option…