package x10.errors; import polyglot.ast.Expr; import polyglot.ast.Node; import polyglot.frontend.Job; import polyglot.types.Type; import polyglot.types.ProcedureInstance; import polyglot.util.ErrorInfo; import polyglot.util.Position; import polyglot.visit.ContextVisitor; import x10.Configuration; import x10.ExtensionInfo; import x10.X10CompilerOptions; import x10.types.X10Use; public class Warnings { public static ErrorInfo CastingExprToType(Expr e, Type t, Position p) { return new ErrorInfo(ErrorInfo.WARNING, "Expression '" + e + "' was cast to type " + t + ".", p); } public static void checkErrorAndGuard(ContextVisitor tc, X10Use use, Node n) { if (use.error() != null) { Errors.issue(tc.job(), use.error(), n); } } public static ErrorInfo GeneratedDynamicCheck(Position p) { return new ErrorInfo(ErrorInfo.WARNING, "Generated a dynamic check for the method call.", p); } public static boolean dynamicCall(Job job, ErrorInfo e) { final ExtensionInfo extensionInfo = (ExtensionInfo) job.extensionInfo(); X10CompilerOptions opts = extensionInfo.getOptions(); if (opts.x10_config.STATIC_CHECKS) { return false; } else if (opts.x10_config.VERBOSE_CHECKS) { Warnings.issue(job, e); } else { extensionInfo.incrWeakCallsCount(); } return true; } public static void issue(Job job, String message, Position pos) { issue(job, new ErrorInfo(ErrorInfo.WARNING, message, pos)); } public static void issue(Job job, ErrorInfo e) { issue((ExtensionInfo) job.extensionInfo(), e); } public static void issue(ExtensionInfo extInfo, ErrorInfo e) { boolean newP = extInfo.warningSet().add(e); if (newP) { extInfo.compiler().errorQueue().enqueue(e); } } }