When calling a Basic procedure using a named argument (for example,
foo(y:=10)), optional skipped parameters were not correctly marked as
missing, causing the function IsMissing() to return incorrect results.
Change-Id: I90a9910165ec00a24deba86f7b3397dbc0720c93
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205034
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
As required by [MS-VBAL], and actual VBA implementation.
It is a question if we also need to change it likewise in other
modes (normal, compatible) - see tdf#150460.
Change-Id: I1e83d57fe4be3bf264a64fe977909cf7684bc798
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172005
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Intent is to cover:
- EndIf / End If equivalence
- repeating ElseIf blocks
_ nested IF statements
- IF THEN one liner
Change-Id: I667f0381529afcc82fc44ae461081f7ba84b01d0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171352
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Don't execute On expression GoSub Statement; On expression GoTo
Statement if the expression lies out of range.
Change-Id: I5c1de25918b5e812d7ec82034f8d56351374d56a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165960
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
Tested-by: Jenkins
Exponent in scientific number may use '?' as blank like in format "0.00E+?0"
This change:
- adds interpreatation of '0' and '?' in exponent
- adds "blank-exponent-digits" attribute to scientific number for import
and export to ODF
- prevents using exponent with only '?'. There must be at least one '0'
in exponent
- adds QA test of such format and test import/export/import to ODF and OOXML
- corrects one basic test
Change-Id: If52edc632a161f842270bb2fd77af535e2b978d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154986
Tested-by: Jenkins
Reviewed-by: Laurent Balland <laurent.balland@mailo.fr>
This properly handles null bytes that are expected
when converting between byte strings and Unicode.
It properly handles TransliterationFlags, which are
not a bitset.
In vbProperCase, it uses the correct method to
lowercase the string, working not only with ASCII.
Change-Id: I04e8cdca66ef9863a6516b15205a2a543ed97680
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149224
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Change lowercase ß U+00DF LATIN SMALL LETTER SHARP S from
LowerToUpper, ToUpper: SS
ToTitle: Ss
FullFolding: ss
to
LowerToUpper, ToUpper: ẞ U+1E9E
ToTitle: ẞ U+1E9E
FullFolding: ss
Add uppercase ẞ U+1E9E LATIN CAPITAL LETTER SHARP S
UpperToLower, ToLower: ß U+00DF
FullFolding: ss
Adjust BASIC Collection test to new reality.
Change-Id: I198e06985b81a71e5de94bf7fab7a0dbaf10baef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124988
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
In addition, create a meaningful error message and don't create and
artificial error message if there exists a custom one.
Change-Id: I682e497ee3fdfe4da80fb17ab41c1b4cf90eb2cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122206
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
In order to support the correct data type of numeric constants,
booleans, and default values for strings, the strategy to transport the
data type character to the runtime has been changed.
The type character will be added after the literal and the string
termination symbol in order to keep compatibility. This allows to
retrieve the correct type in StepLOADNC and in StepPARAM.
Any legacy written images are still possible to process, since if there
is a suffix type character where the data type character was directly
written after the numeric constant, it will be processed in StepLOADNC.
Without this fix, an optional parameter of type Variant, would still
include the suffixe type character, and will not be converted to the
correct type in StepPARAM.
Change-Id: I86c8192c6dc28457053fa7b23a073420e45407b2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119945
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
In addtion, fixed a crash if the start position is greater than the
length of the string being searched.
Change-Id: I9bcda1131324bdfac6957018e91b3a36dd2dc3d6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118996
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
The LibreOffice's Basic Round function does not return values
that are compatible with VBA's Round. This can be easily fixed
using rtl/round, which has a flag parameter called
rtl_math_RoundingMode_HalfEven which rounds real numbers
exactly in the expected way.
Change-Id: I2215f08427e5777fc2d35f054b635dfa6247af8c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118444
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This makes sure that results of comparison of literals have proper boolean type,
and that this type is properly stored to/read from the string pool.
This introduces a new non-standard "type" character used in the pool: 'b'. It is
not a proper type character used in Basic (unlike '%'/'&'/'!'/'@'), but we have
to use this trick locally, because we need to pass the type that has no own type
character.
The change should be backward-compatible: older versions reading the value should
just ignore the 'b', and read the value as double.
Change-Id: Ibd4a70b366331342346eb171c8ed3c7026279596
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117655
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Inherit day, month and era names from en_US but with proper
values. See https://lh.2xlibre.net/locale/en_GB/
- Week definition (week)
- First day of week (first_weekday)
or
% LC_TIME=en_US locale -k LC_TIME
week-ndays=7
week-1stday=19971130
week-1stweek=1
first_weekday=1
first_workday=2
% LC_TIME=en_GB locale -k LC_TIME
week-ndays=7
week-1stday=19971130
week-1stweek=4
first_weekday=2
first_workday=2
This makes it necessary to adapt basic/qa/vba_tests/weekdayname.vb
because basic/qa/cppunit/test_vba.cxx sets LANGUAGE_ENGLISH_UK
Change-Id: I752bf0e59396f0cbd601beb596c07e77e4e4cfaf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115160
Tested-by: Jenkins
Reviewed-by: Eike Rathke <erack@redhat.com>
* vbUnicode/vbFromUnicode considers optional third LCID argument.
* LCID is also used for other conversions.
* The encoding is decided based on the language defined in LCID,
or on program locale when LCID is omitted, using MS default
ACP mapping for languages.
* Unit testis for vbWide / vbNarrow are changed and enabled.
* Unit tests for vbKatakana / vbHiragana are changed and enabled.
* Unit test for vbFromUnicode / vbUnicode is changed to rely on
en-US locale used in testing, and is enabled.
Change-Id: Iabd4153db311cd02c3f3e7247f9fc71ad9f5f682
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112539
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>