mirror of
https://github.com/cincheo/jsweet.git
synced 2025-12-15 15:29: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) {
|
if (isDefinitionScope) {
|
||||||
print("var ");
|
print("var ");
|
||||||
} else {
|
} else {
|
||||||
if (!isLazyInitialized(varDecl.sym) && (varDecl.sym.getModifiers().contains(Modifier.FINAL)
|
if (!isLazyInitialized(varDecl.sym) && ((!globals && constAnalyzer != null
|
||||||
|| (!globals && constAnalyzer != null
|
&& !constAnalyzer.getModifiedVariables().contains(varDecl.sym))
|
||||||
&& !constAnalyzer.getModifiedVariables().contains(varDecl.sym)))) {
|
|| (globals && varDecl.sym.getModifiers().contains(Modifier.FINAL)
|
||||||
|
&& varDecl.init != null))) {
|
||||||
print("const ");
|
print("const ");
|
||||||
} else {
|
} else {
|
||||||
print(VAR_DECL_KEYWORD + " ");
|
print(VAR_DECL_KEYWORD + " ");
|
||||||
|
|||||||
@ -160,13 +160,15 @@ public class SyntaxTests extends AbstractTest {
|
|||||||
logHandler.assertNoProblems();
|
logHandler.assertNoProblems();
|
||||||
}, f1, f2);
|
}, f1, f2);
|
||||||
String generatedCode = FileUtils.readFileToString(f1.getTsFile());
|
String generatedCode = FileUtils.readFileToString(f1.getTsFile());
|
||||||
Assert.assertTrue(generatedCode.indexOf("const explicitFinalString") > -1);
|
Assert.assertTrue(generatedCode.contains("const explicitFinalString"));
|
||||||
Assert.assertTrue(generatedCode.indexOf("const implicitFinalString") > -1);
|
Assert.assertTrue(generatedCode.contains("let explicitFinalStringWithDeferredAssignment"));
|
||||||
Assert.assertTrue(generatedCode.indexOf("let notFinalString") > -1);
|
Assert.assertFalse(generatedCode.contains("const explicitFinalStringWithDeferredAssignment"));
|
||||||
|
Assert.assertTrue(generatedCode.contains("const implicitFinalString"));
|
||||||
|
Assert.assertTrue(generatedCode.contains("let notFinalString"));
|
||||||
generatedCode = FileUtils.readFileToString(f2.getTsFile());
|
generatedCode = FileUtils.readFileToString(f2.getTsFile());
|
||||||
Assert.assertTrue(generatedCode.indexOf("const explicitFinalGlobal") > -1);
|
Assert.assertTrue(generatedCode.contains("const explicitFinalGlobal"));
|
||||||
Assert.assertTrue(generatedCode.indexOf("let implicitFinalGlobal") > -1);
|
Assert.assertTrue(generatedCode.contains("let implicitFinalGlobal"));
|
||||||
Assert.assertTrue(generatedCode.indexOf("let notFinalGlobal") > -1);
|
Assert.assertTrue(generatedCode.contains("let notFinalGlobal"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@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() {
|
void implicitFinal() {
|
||||||
String implicitFinalString = "abc";
|
String implicitFinalString = "abc";
|
||||||
handler(new ANonFunctionalInterface() {
|
handler(new ANonFunctionalInterface() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user