com.google.gwt.dev.jjs.impl.codesplitter.EchoStatementLogger Maven / Gradle / Ivy
/*
* Copyright 2013 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dev.jjs.impl.codesplitter;
import com.google.gwt.dev.jjs.ast.JField;
import com.google.gwt.dev.jjs.ast.JMethod;
import com.google.gwt.dev.jjs.ast.JProgram;
import com.google.gwt.dev.jjs.impl.JavaToJavaScriptMap;
import com.google.gwt.dev.js.ast.JsExprStmt;
import com.google.gwt.dev.js.ast.JsExpression;
import com.google.gwt.dev.js.ast.JsFunction;
import com.google.gwt.dev.js.ast.JsStatement;
import com.google.gwt.dev.js.ast.JsVars;
/**
* A statement logger that immediately prints out everything live that it
* sees.
*/
class EchoStatementLogger implements FragmentExtractor.StatementLogger {
private final JavaToJavaScriptMap map;
public EchoStatementLogger(JavaToJavaScriptMap map) {
this.map = map;
}
@Override
public void log(JsStatement statement, boolean include) {
if (!include) {
return;
}
if (statement instanceof JsExprStmt) {
JsExpression expr = ((JsExprStmt) statement).getExpression();
if (!(expr instanceof JsFunction)) {
return;
}
JsFunction func = (JsFunction) expr;
if (func.getName() == null) {
return;
}
JMethod method = map.nameToMethod(func.getName());
if (method == null) {
return;
}
System.out.println(JProgram.getFullName(method));
} else if (statement instanceof JsVars) {
JsVars vars = (JsVars) statement;
for (JsVars.JsVar var : vars) {
JField field = map.nameToField(var.getName());
if (field != null) {
System.out.println(field.getQualifiedName());
}
}
}
}
}