mirror of
https://github.com/cincheo/jsweet.git
synced 2025-12-15 07:19:22 +00:00
handle the case of explicit finals with deferred assignment
This commit is contained in:
parent
beec62b30e
commit
05d6210ece
@ -3425,9 +3425,10 @@ public class Java2TypeScriptTranslator extends AbstractTreePrinter {
|
||||
if (isDefinitionScope) {
|
||||
print("var ");
|
||||
} else {
|
||||
if (!isLazyInitialized(varDecl.sym) && (varDecl.sym.getModifiers().contains(Modifier.FINAL)
|
||||
|| (!globals && constAnalyzer != null
|
||||
&& !constAnalyzer.getModifiedVariables().contains(varDecl.sym)))) {
|
||||
if (!isLazyInitialized(varDecl.sym) && ((!globals && constAnalyzer != null
|
||||
&& !constAnalyzer.getModifiedVariables().contains(varDecl.sym))
|
||||
|| (globals && varDecl.sym.getModifiers().contains(Modifier.FINAL)
|
||||
&& varDecl.init != null))) {
|
||||
print("const ");
|
||||
} else {
|
||||
print(VAR_DECL_KEYWORD + " ");
|
||||
|
||||
@ -160,13 +160,15 @@ public class SyntaxTests extends AbstractTest {
|
||||
logHandler.assertNoProblems();
|
||||
}, f1, f2);
|
||||
String generatedCode = FileUtils.readFileToString(f1.getTsFile());
|
||||
Assert.assertTrue(generatedCode.indexOf("const explicitFinalString") > -1);
|
||||
Assert.assertTrue(generatedCode.indexOf("const implicitFinalString") > -1);
|
||||
Assert.assertTrue(generatedCode.indexOf("let notFinalString") > -1);
|
||||
Assert.assertTrue(generatedCode.contains("const explicitFinalString"));
|
||||
Assert.assertTrue(generatedCode.contains("let explicitFinalStringWithDeferredAssignment"));
|
||||
Assert.assertFalse(generatedCode.contains("const explicitFinalStringWithDeferredAssignment"));
|
||||
Assert.assertTrue(generatedCode.contains("const implicitFinalString"));
|
||||
Assert.assertTrue(generatedCode.contains("let notFinalString"));
|
||||
generatedCode = FileUtils.readFileToString(f2.getTsFile());
|
||||
Assert.assertTrue(generatedCode.indexOf("const explicitFinalGlobal") > -1);
|
||||
Assert.assertTrue(generatedCode.indexOf("let implicitFinalGlobal") > -1);
|
||||
Assert.assertTrue(generatedCode.indexOf("let notFinalGlobal") > -1);
|
||||
Assert.assertTrue(generatedCode.contains("const explicitFinalGlobal"));
|
||||
Assert.assertTrue(generatedCode.contains("let implicitFinalGlobal"));
|
||||
Assert.assertTrue(generatedCode.contains("let notFinalGlobal"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -111,6 +111,21 @@ public class FinalVariables {
|
||||
});
|
||||
}
|
||||
|
||||
public void explicitFinalWithDeferredAssignment(boolean condition) {
|
||||
final String explicitFinalStringWithDeferredAssignment;
|
||||
if(condition) {
|
||||
explicitFinalStringWithDeferredAssignment = "1";
|
||||
} else {
|
||||
explicitFinalStringWithDeferredAssignment = "2";
|
||||
}
|
||||
handler(new ANonFunctionalInterface() {
|
||||
@Override
|
||||
public void m() {
|
||||
System.out.println(explicitFinalStringWithDeferredAssignment);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void implicitFinal() {
|
||||
String implicitFinalString = "abc";
|
||||
handler(new ANonFunctionalInterface() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user