2016-09-05 2 views
1

Ich habe laufen Google Schließung Compiler für die nächste:Google Schließung Compiler weist keine Division durch Null

alert(1/0); 

mit dem Befehl:

java -jar node_modules\google-closure-compiler\compiler.jar --warning_level=VERBOSE test.js 

und es hat nichts berichten. Ich erwartete, es sagt etwas über Devide durch Null, da die Referenz (https://developers.google.com/closure/compiler/docs/error-ref) Erwähnungen über

JSC_DIVIDE_BY_0_ERROR:

Division durch 0

Dieser Fehler bedeutet, dass Sie eine arithmetische Teilung Ausdruck mit einem Nenner von 0. Die Division durch Null zur Laufzeit erzeugt einen Laufzeitfehler.

Ich habe auch getestet, den Beispielcode für JSC_BITWISE_OPERAND_OUT_OF_RANGE:

var y = 1024 * 1024 * 1024 * 2 >> 2; 

und in diesem Fall genau google Schließung Compiler das Problem hinweisen.

test.js:2: WARNING - Operand out of range, bitwise operation will lose information: NUMBER 2.147483648E9 2 [length: 22] [source_file: test.js] 
var y = 1024 * 1024 * 1024 * 2 >> 2; 
     ^

Wie kann ich JSC_DIVIDE_BY_0_ERROR für die Top-Quellcode?

+0

* "Die Division durch Null zur Laufzeit erzeugt einen Laufzeitfehler." * - Nein, in JavaScript erzeugt eine Division durch Null den Wert "Infinity". (Was ein * logischer * Fehler in Ihrem Algorithmus sein kann, aber es ist kein Laufzeitfehler im Sinne einer Ausnahme.) – nnnnnn

+0

Wollen Sie damit sagen, dass die Beschreibung in Bezug auf den Closing-Compiler nicht richtig ist? Wie auch immer, es ist mir egal, was hier in der Laufzeit passiert. Ich möchte es statisch mit Closing-Compiler überprüfen. – xylosper

+1

Wenn es als eine Beschreibung der Funktionsweise von JavaScript gedacht ist, ist es definitiv falsch, aber ich weiß nicht, wie diese Closure Compiler-Optionen funktionieren sollen. (Wenn man statisch nach Division durch Null sucht, kann man das natürlich nur für Konstanten tun, denn wenn der Code '1/x' sagt, kann der Compiler nicht sagen, was' x' zur Laufzeit ist, aber ich denke, das weißt du.) – nnnnnn

Antwort

1

Der JSC_DIVIDE_BY_0_ERROR Fehler ist nicht mehr im Compiler-Quellcode vorhanden, Sie können ihn unter suchen. Damit muss die Fehlerprüfung entfernt worden sein.

Die Closure Compiler-Dokumentation ist derzeit etwas veraltet und auf verschiedene Seiten verteilt.

+0

Es wurde im März 2011 gelöscht – John